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
SqlCommandSqlDataReaderSqlDataAdapter

Connection       建立与特定数据源的连接

Command        对数据源执行命令

DataReader       从数据源中读取只进且只读的数据流

DataAdpter       用数据源填充DataSet并解析更新

2.。DataSet(数据集)
   
是专门为独立于任何数据源的数据访问而设计的。可以不必直接和数据库打交道,可以大批量地操作数据,也可以将数据绑定在控件上。

2 使用Connection对象

1$ .NET Framework数据库提供程序及相应连接类(暂略,见P1506-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
();

特别注意:
 
要连接的数据库必须处于联机状态
 
此三步中,第12步也可以调换,一般先创建一个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$ 如何处理异常

1try……catch语句
   .NET Framework
提供了try……catch语句块来捕获和处理异常

  
语法: try
         {
           //
包含可能出现异常的代码
         }
         catch{
处理异常的类型}
         {
           //
处理异常的代码
         }

   
把可能出现异常的代码用try块括起来,如果在运行中出现了异常,会自动跳转到catch块中,这个过程叫捕获了异常

2Exception

   
异常也有很多种类,异常的类型都写作Exception(除外,例外),它是.NET提供的一个异常类,表示应用程序在运行时出现的错误。如:

          try
         {
           conn.Open( );
           //
其他操作
           conn.Close( );
         }
         catch{Exception ex}      //
处理异常的类型
         {
           //
错误处理代码
         }

3finally
  
数据库连接必须显性关闭,如果在数据库连接关闭之前就出现了异常,程序跳转到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)方法的返回值,要进行显示类型转换

2ex对象的使用(也可以其别的名字)
   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对象的某个方法执行命令

特别注意:除非用+号连接字符串,否则很长的查询语句也不能
         
换行