1¥ ADO.NET概述
大部分应用程序都要访问或者保存数据,通常,这些数据都是保存在数据库中的。这就需要用到数据库访问的方法和技术,ADO.NET就是这种技术之一。
1$ ADO.NET简介
1.。ADO.NET是.NET Framework中的一组类(四种),通过这些类,.NET应用程序就可以访问数据库了。
2.。ADO.NET提供了对关系数据库、XML以及其他数据存储的访问,
通过ADO.NET连接到这些数据源,对数据进行增删和改查。
3.。ADO.NET的断开连接模型
ADO.NET与数据源断开连接时也可以使用数据。
可以把从数据源检索到的数据保存在本地一个叫做“数据集”的地方,应用程序直接操作本地数据就行了。
2$ ADO.NET的主要组件
.NET Framework数据提供程序
DataSet(数据集)
1.。.NET Framework数据提供程序:
专门为数据处理及快速地只进、只读访问数据而是设计的组件。使用它,可以连接到数据库、执行命令和检索结果,直接对数据库进行操作。
1)四种类型的.NET Framework数据库提供程序
SQL Server .NET Framework
使用System.Data.sqlClient命名空间,提供对Microsoft SQL Server 7.0版本或更高版本的数据访问。
OLE DB .NET Framework
使用System.Data.OleDb命名空间,适合于使OLE DB公开的数据源。
ODBC .NET Framework
使用System.Data.Odbc命名空间,适合于使用ODBC公开的数据源。
Oracle .NET Framework
使用System.Data.OracleClient命名空间,适合于Oracle数据源。支持Oracle客户端软件8.1.7版和更高版本
2)数据提供程序的4个核心对象
不同的数据库提供程序的命名空间都有相应的对象,如:SQL Sever数据库,使用System.Data.SqlClient命名空间,数据库提供程序中的类都以“SQL”开头,它的四个核心对象为:
SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter
Connection 建立与特定数据源的连接
Command 对数据源执行命令
DataReader 从数据源中读取只进且只读的数据流
DataAdpter 用数据源填充DataSet并解析更新
2.。DataSet(数据集)
是专门为独立于任何数据源的数据访问而设计的。可以不必直接和数据库打交道,可以大批量地操作数据,也可以将数据绑定在控件上。
2¥ 使用Connection对象
1$ .NET Framework数据库提供程序及相应连接类(暂略,见P150表6-3)
2$ Connection对象的主要属性和方法
属性: ConnectionString 用于连接数据库的连接字符串
方法: Open 使用ConnectionString属性所指定的设置打开数据库连接
Close 关闭与数据库的连接
在ADO.NET中,如果使用.NET Framework数据库提供程序操作数据,必须显示关闭与数据库的连接,也就是说在操作完数据库后,必须调用Connection对象的Close()方法关闭连接。
3$ 连接数据库的主要步骤
1.。定义连接字符串
不同的数据库,连接字符串格式不同。SQL Server数据库的连接字符串格式一般为:
Data Source=服务器名;Initial CataLog=数据库名;User ID=用户名;
Pwd=密码
简写格式为:
"Server=服务器名;database=数据库名;Uid=用户名;pwd=密码"
服务器如是本机,可以输入“。”来代替计算机名或者IP地址
密码为空,可以省略Pwd一项。
2.。创建Connection对象
使用定义好的连接字符串创建Connection对象
SqlConnection connection = new SqlConnection(connString);
3.。打开与数据库的连接
调用Connection对象的Open()方法打开数据库连接
Connection.Open();
特别注意:
要连接的数据库必须处于联机状态
此三步中,第1、2步也可以调换,一般先创建一个Connection对象,在设置它的ConnectionString属性,如:
SqlConnection connection = new SqlConnection( ); //创建对象
string connstring = “Data Source = .; //连接字符串服务器值为本地
Initial Catelog=pubs; //连接字符串数据库名值为pubs
User ID=sa” ; //连接字符串用户名值为sa且无密码
connection.ConnectionString = connString;
//将connString付给connection对象的ConnectionString属性
4.。 鼠标方式创建连接字符串
1)选择“视图”-“服务器资源管理器”,快捷键为:Ctrl+Alt+S
2)在打开的服务器资源管理器中,右键单击“数据连接”,选择“添
加连接”选项。
3)在弹出的“添加连接”对话框中,输入服务器名,选择身份验
证,选择要连接的数据库,确定后,就在服务器资源管理器中
添加了一个数据连接。
4)选中新添加的连接,在“属性”窗口中就能找到连接字符串了,
可以将它选中复制到我们的代码中。
说明:鼠标方式只能获得连接字符串,实现连接还是要通过代码执行
3¥ 异常处理
错误在编译的时候产生,这是编译错误
错误在程序运行时出现的,这种错误就是异常。
为了让应用程序能够很好地工作,我们对那些可能发生的错误进行编码处
理,这就是异常处理。
1$ 如何处理异常
1)try……catch语句
.NET Framework提供了try……catch语句块来捕获和处理异常
语法: try
{
//包含可能出现异常的代码
}
catch{处理异常的类型}
{
//处理异常的代码
}
把可能出现异常的代码用try块括起来,如果在运行中出现了异常,会自动跳转到catch块中,这个过程叫捕获了异常。
2)Exception类
异常也有很多种类,异常的类型都写作Exception(除外,例外),它是.NET提供的一个异常类,表示应用程序在运行时出现的错误。如:
try
{
conn.Open( );
//其他操作
conn.Close( );
}
catch{Exception ex} //处理异常的类型
{
//错误处理代码
}
3)finally块
数据库连接必须显性关闭,如果在数据库连接关闭之前就出现了异常,程序跳转到catch中,则try块中的关闭方法就不执行了。
为了解决类似的问题,.NET Framework提供了finally块,即:无论是否发生异常,写在finally块中的语句都回执行。如:
try
{
conn.Open( );
//其他操作
}
catch{Exception ex} //ex是处理异常的类型的对象名
{
//错误处理代码
}
finally
{
conn.Close();
}
特别注意:try…finally 可以
try…catch 可以(catch后必须有exception)
try…catch…finally 可以(catch后必须有exception)
try…不行,即单独使用try也不行
catch…finally 不行,即必须有try才行。
4)手动鼠标方式添加try…catch…finally块
暂略,注意添加“外侧代码”的应用,详见P156-157
当已经写好了一段代码,想修改一下放在一个语句块中,添加外侧代码的功能非常好用。
如果忘记了一个代码块的格式,以可以使用外侧代码找回。
4¥ 使用Command对象
建立和数据库连接后,Command对象可以对数据库执行增删改查的命令
1$ 认识Command对象
同Connection对象一样,Command对象也属于.NET Framework数据库提供程序的一种对象。
建立了数据库连接后,就可以使用相应的Command对象来操作数据库了。
1.。四种命令类
SqlCommand 使用System.Data.SqlClient命名空间
属于SQL数据库提供程序
OleDbcommand 使用System.Data.OleDb命名空间
属于OLE DB数据库提供程序
OdbcCommand 使用System.Data.Odbc命名空间
属于ODBC数据库提供程序
OracleCommand 使用System.Data.OracleClient命名空间
属于Oracle数据提供程序
2.。Command对象的主要属性和方法
属性: Connection Command对象使用的数据库连接
CommandText 执行的SQL语句
方法: ExecuteNonQuery 执行不返回行的语句,如update等
ExecuteReader 执行查询,返回DataReader对象
ExecuteScalar 返回单个值,如:执行Count(*)
ExecuteScalar()方法只返回查询结果中的第一行第一列的值。
所以当我们的查询结果只有一个值时,通常使用这个方法。
如果ExecuteScalar()方法没有查询到数据,会返回一个DBNULL类型的数据(表示数据库的空值),可用于条件判断。
特别注意:
1)方法的返回值,要进行显示类型转换
2)ex对象的使用(也可以其别的名字)
ex是Exception类在程序中定义的一个对象,一般使用“。”运算符调用Exception类的Message属性,显示异常或错误的信息。
如:p159页示例3中
//操作出错
MessageBox.Show(ex.Message)
3.。Command对象的使用步骤
要使用Command对象,必须有一个可用的Connection对象
1)创建数据库连接:创建一个可用的Connection对象
2)定义执行的SQL语句
将我们想对数据库执行的SQL语句赋给一个字符串
3)创建Command对象
使用已有的Connection对象和SQL语句字符串创建一个
Command对象。如:
SqlCommand command = new SqlCommand
(Sql命令字符串名,
定义好的Connection对象名);
4)执行SQL语句
使用Command对象的某个方法执行命令