20
10 10 第 第第第第第第第 第 第第第第第第第 王王王 王王王王王王王王王王王王

第 10 章 数据库开发技术

Embed Size (px)

DESCRIPTION

第 10 章 数据库开发技术. 王德俊 上海交通大学继续教育学院. 第 10 章 数据库开发技术. 10.1 数据库系统与ADO.NET概述 10.2 SQL语言简介 10.3 ADO.NET对象. ADO.NET 体系结构:. 四个核心类对象 用于实现对数据库的数据处理 : (1) Connection 对象:实现数据连接 ,在使用过程中,根据不同的数据库的类型使用不同的 Connection 控件 (2) Command 对象: 用于 执行数据库的命令 操作,包括检索、插入、删除以及更新操作 - PowerPoint PPT Presentation

Citation preview

Page 1: 第 10 章 数据库开发技术

第第 1010 章 数据库开发技术章 数据库开发技术

王德俊

上海交通大学继续教育学院

Page 2: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

第 10 章 数据库开发技术

10.1 数据库系统与 ADO.NET 概述

10.2 SQL 语言简介

10.3 ADO.NET 对象

Page 3: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

ADO.NET体系结构:

Page 4: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

四个核心类对象用于实现对数据库的数据处理 :

(1) Connection 对象:实现数据连接,在使用过程中,根据不同的数据库的类型使用不同的 Connection 控件

(2) Command 对象:用于执行数据库的命令操作,包括检索、插入、删除以及更新操作

(3) DataAdapter 对象:在 DataSet 对象和数据源之间架起了一座“桥梁”,来实现数据源和数据集之间的数据交换

(4) DataReader 对象: DataReader 对象用于从数据库中读取由 SELECT 命令返回的只读、只进的数据流,需要一直保持与数据库的连接,不提供非连接数据访问

Page 5: 第 10 章 数据库开发技术

应用软件开发( 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 对象

Page 6: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

10.3 ADO.NET对象10.3.1 Connection对象

Connection 对象用于连接数据库,不同的数据库有不同的Connection 对象:

SQL Server 数据库—— SqlConnection 对象

Access 数据库—— OleDbConnection 对象

Page 7: 第 10 章 数据库开发技术

应用软件开发( 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对象

Page 8: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

10.3 ADO.NET对象10.3.1 Connection对象

Connection 对象最常用的方法:Open() 方法:打开与数据库的连接Close() 方法:关闭与数据库的连接Dispose() 方法:释放由 Connection 占用的资源

如:conn.Open();

conn.Close();

conn.Dispose();

属性 DataSource :返回数据库服务器的信息;属性 State.ToString() :返回和数据库服务器的连接状态信息

Page 9: 第 10 章 数据库开发技术

应用软件开发( 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";

Page 10: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

10.3.2 Command 对象

CommandTimeOut 属性用于设置或返回终止执行命令之前需要等待的时间(单位为秒),默认为

30 。

CommandType 属性用于决定 CommandText 属性值的格式:

Text :表示 CommandText 属性值为 SQL 语句StoredProcedure :表示 CommandText 属性值为存储过程TableDirect :表示 CommandText 属性值为要读取的表。

例如: command.CommandType = CommandType.Text;

Page 11: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

常用方法包括:( 1 )构造函数:有多个重载版本,以 SqlCommand 对象为例,其主要版本包括:

public SqlCommand(); // 用于创建一个 SqlCommand 对象,但没有做其他的初始化工作

public SqlCommand(string cmdText); // 在创建对象的同时用参数 cmdText 定义命令文本初始化

public SqlCommand(string cmdText, SqlConnection connection); // 在创建的同时用用参数 cmdText 定义命令文本和已有的 SqlConnection 对象初始化。

10.3.2 Command 对象

Page 12: 第 10 章 数据库开发技术

应用软件开发( 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 对象

Page 13: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

(2) ExecuteNonQuery() 方法 :

该方法用于执行没有返回结果集的 SQL 语句,如建表语句、 Insert 、 Update 、 Delete 语句等。

命令的文本是在 CommandText 属性中设置的。其返回结果是执行命令后受到影响的行数。

10.3.2 Command 对象

Page 14: 第 10 章 数据库开发技术

应用软件开发( 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 对象

Page 15: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

DataReader 对象用于从数据库中读取由 SELECT 命令返回的只读、只进的数据流,在此过程中一直保持与数据库的连接。

优点:执行效率高,在体积和开销上它比数据集小,占用内存少

缺点:在读取数据时它与服务器的连接始终是打开的,它只能以单向向前的次序访问记录,所以仅用于数据检索等功能非常单一的设计中。

10.3 ADO.NET对象

10.3.3 DataReader对象

Page 16: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

10.3.3 DataReader 对象

DataReader 对象常用属性和方法:

FieldCount 属性 : 返回字段的数目。

IsClosed 属性 : 返回 DataReader 对象是否关闭的状态,如果关闭则返回 true ,否则返回 false 。

RecordsAffected 属性 : 返回执行 insert 、 delete 或update 后受到影响的行数。

Page 17: 第 10 章 数据库开发技术

应用软件开发( 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 。使用该方法可以从查询结果中读取数据。

Page 18: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

例 1 ,下面代码先利用 Command 对象执行 Select 语句,并将返回的结果集放到 DataReader 对象中,然后利用DataReader 对象提供的属性和方法逐行、逐项提取结果集中的数据,并显示到 ListBox 对象中。

若要创建 SqlDataReader ,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。

Page 19: 第 10 章 数据库开发技术

应用软件开发( 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("---------------");}

Page 20: 第 10 章 数据库开发技术

应用软件开发( C# ) 第 10 章 数据库开发技术

本讲小结

Connection 对象

Command 对象

DataReader 对象