第 10 章 数据库开发技术
DESCRIPTION
第 10 章 数据库开发技术. 王德俊 上海交通大学继续教育学院. 第 10 章 数据库开发技术. 10.1 数据库系统与ADO.NET概述 10.2 SQL语言简介 10.3 ADO.NET对象. ADO.NET 体系结构:. 四个核心类对象 用于实现对数据库的数据处理 : (1) Connection 对象:实现数据连接 ,在使用过程中,根据不同的数据库的类型使用不同的 Connection 控件 (2) Command 对象: 用于 执行数据库的命令 操作,包括检索、插入、删除以及更新操作 - PowerPoint PPT PresentationTRANSCRIPT
第第 1010 章 数据库开发技术章 数据库开发技术
王德俊
上海交通大学继续教育学院
应用软件开发( C# ) 第 10 章 数据库开发技术
第 10 章 数据库开发技术
10.1 数据库系统与 ADO.NET 概述
10.2 SQL 语言简介
10.3 ADO.NET 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
ADO.NET体系结构:
应用软件开发( C# ) 第 10 章 数据库开发技术
四个核心类对象用于实现对数据库的数据处理 :
(1) Connection 对象:实现数据连接,在使用过程中,根据不同的数据库的类型使用不同的 Connection 控件
(2) Command 对象:用于执行数据库的命令操作,包括检索、插入、删除以及更新操作
(3) DataAdapter 对象:在 DataSet 对象和数据源之间架起了一座“桥梁”,来实现数据源和数据集之间的数据交换
(4) DataReader 对象: DataReader 对象用于从数据库中读取由 SELECT 命令返回的只读、只进的数据流,需要一直保持与数据库的连接,不提供非连接数据访问
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3 ADO.NET 对象10.3.1 Connection 对象
10.3.2 Command 对象
10.3.3 DataReader 对象
10.3.4 DataAdapter 对象
10.3.5 DataSet 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3 ADO.NET对象10.3.1 Connection对象
Connection 对象用于连接数据库,不同的数据库有不同的Connection 对象:
SQL Server 数据库—— SqlConnection 对象
Access 数据库—— OleDbConnection 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
连接到 SQL Server 数据库的连接方式有两种:
Windows 身份验证登录,可以用类似以下连接字串:string strConnection = "Data Source=localhost; Initial Catalog=MyDatabase;
Integrated Security=SSPI;";
SQL 身份( sa )验证登录,可以用类似以下连接字串::string strConnection = "Data Source=localhost; Initial Catalog=MyDatabase;
Persist Security Info =True; User ID=sa; Password=123456";
创建连接到 SQL Server 数据库的 Connection 对象:SqlConnection conn = new SqlConnection( strConnection );
10.3 ADO.NET对象10.3.1 Connection对象
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3 ADO.NET对象10.3.1 Connection对象
Connection 对象最常用的方法:Open() 方法:打开与数据库的连接Close() 方法:关闭与数据库的连接Dispose() 方法:释放由 Connection 占用的资源
如:conn.Open();
conn.Close();
conn.Dispose();
属性 DataSource :返回数据库服务器的信息;属性 State.ToString() :返回和数据库服务器的连接状态信息
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3 ADO.NET对象10.3.2 Command对象
Command 对象用于执行针对数据库的 SQL 命令。其常用属性有:
Connection 属性,用于设置 Command 对象所依赖的连接对象,如:
SqlCommand command = new SqlCommand();
command.Connection = conn;
CommandText 属性,用于设置 Command 对象要执行的命令文本,如:
command.CommandText = "Select * From student";
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3.2 Command 对象
CommandTimeOut 属性用于设置或返回终止执行命令之前需要等待的时间(单位为秒),默认为
30 。
CommandType 属性用于决定 CommandText 属性值的格式:
Text :表示 CommandText 属性值为 SQL 语句StoredProcedure :表示 CommandText 属性值为存储过程TableDirect :表示 CommandText 属性值为要读取的表。
例如: command.CommandType = CommandType.Text;
应用软件开发( C# ) 第 10 章 数据库开发技术
常用方法包括:( 1 )构造函数:有多个重载版本,以 SqlCommand 对象为例,其主要版本包括:
public SqlCommand(); // 用于创建一个 SqlCommand 对象,但没有做其他的初始化工作
public SqlCommand(string cmdText); // 在创建对象的同时用参数 cmdText 定义命令文本初始化
public SqlCommand(string cmdText, SqlConnection connection); // 在创建的同时用用参数 cmdText 定义命令文本和已有的 SqlConnection 对象初始化。
10.3.2 Command 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
例如,假设 strSQL 已经定义如下:string strSQL = "INSERT INTO student VALUES('20102001',' 阎妮 ',' 女 ', 98)";
且 conn 是已经创建的 SqlConnection 对象,则下面三组语句是等价的:// 第一组SqlCommand command = new SqlCommand();command.Connection = conn;command.CommandText = strSQL;
// 第二组SqlCommand command = new SqlCommand(strSQL);command.Connection = conn;
// 第三组SqlCommand command = new SqlCommand( strSQL, conn );
10.3.2 Command 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
(2) ExecuteNonQuery() 方法 :
该方法用于执行没有返回结果集的 SQL 语句,如建表语句、 Insert 、 Update 、 Delete 语句等。
命令的文本是在 CommandText 属性中设置的。其返回结果是执行命令后受到影响的行数。
10.3.2 Command 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
例如:string ConnectionString= "Data Source=localhost; Initial Catalog=MyDatabase;
Persist Security Info =True; User ID=sa; Password=123456"; SqlConnection conn = new SqlConnection(ConnectionString);
string strSQL = "INSERT INTO student VALUES('20102001',' 阎妮 ',' 女 ', 98)";SqlCommand command = new SqlCommand();command.Connection = conn;command.CommandText = strSQL;
conn.Open();int n = command.ExecuteNonQuery(); // 执行 SQL 语句
10.3.2 Command 对象
应用软件开发( C# ) 第 10 章 数据库开发技术
DataReader 对象用于从数据库中读取由 SELECT 命令返回的只读、只进的数据流,在此过程中一直保持与数据库的连接。
优点:执行效率高,在体积和开销上它比数据集小,占用内存少
缺点:在读取数据时它与服务器的连接始终是打开的,它只能以单向向前的次序访问记录,所以仅用于数据检索等功能非常单一的设计中。
10.3 ADO.NET对象
10.3.3 DataReader对象
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3.3 DataReader 对象
DataReader 对象常用属性和方法:
FieldCount 属性 : 返回字段的数目。
IsClosed 属性 : 返回 DataReader 对象是否关闭的状态,如果关闭则返回 true ,否则返回 false 。
RecordsAffected 属性 : 返回执行 insert 、 delete 或update 后受到影响的行数。
应用软件开发( C# ) 第 10 章 数据库开发技术
10.3.3 DataReader 对象方法 说明CLose() 用于关闭 DataReader 对象。GetDataTypeNam
e(n)返回第 n +1 列的源数据类型名称。
GetFieldType(n) 返回第 n +1 列的数据类型。GetName(n) 返回 n +1 列的字段名称。GetOrdinal(name
)返回字段名称为 name 的字段列号。
GetValue(int n) 返回当前行中第 n+1 列的内容。由 Read() 方法决定当前行。GetValues(object
[] arrays)返回所有字段的内容,并将内容放在 arrays 数组中,数组大小与字段数目相等。
IsDBNull(int n)判断当前行中第 n+1 列是否为 Null ,为 Null 则返回 true ,否则返回 false 。
Read()把记录指针往下一行移动,如果下一行没有了,则返回 false ,否则返回 true 。使用该方法可以从查询结果中读取数据。
应用软件开发( C# ) 第 10 章 数据库开发技术
例 1 ,下面代码先利用 Command 对象执行 Select 语句,并将返回的结果集放到 DataReader 对象中,然后利用DataReader 对象提供的属性和方法逐行、逐项提取结果集中的数据,并显示到 ListBox 对象中。
若要创建 SqlDataReader ,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。
应用软件开发( C# ) 第 10 章 数据库开发技术
……// 连接数据库字串赋值SqlConnection conn = new SqlConnection(ConnectionString);
string strSQL = "SELECT * FROM student";SqlCommand Command = new SqlCommand(strSQL, conn);conn.Open();
SqlDataReader reader = Command.ExecuteReader(); // 结果集放到 reader 对象中
object[] row = new object[reader.FieldCount]; while(reader.Read()==true) { reader.GetValues(row); //获取结果集的当前行 for (int i = 0; i < reader.FieldCount; i++) { listBox1.Items.Add(row[i].ToString()); // 将逐项输出行中的项 } listBox1.Items.Add("---------------");}
应用软件开发( C# ) 第 10 章 数据库开发技术
本讲小结
Connection 对象
Command 对象
DataReader 对象