黑马程序员技术交流社区

标题: ADO.NET详细笔记,看了你也会了哦…… [打印本页]

作者: 袁雅墨    时间: 2012-9-5 00:50
标题: ADO.NET详细笔记,看了你也会了哦……
ado.net组件中有哪些常用的对象?
Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader
DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
DataSet对象:     服务器内存中的数据库
DataView对象:       用于显示DataSet中的数据

ADO.net中常用的对象有哪些?分别描述一下.
Command对象
1.Command对象概述
  Command对象可以使用数据库命令直接与数据源进行通信。它的属性如下:
  Name:Command对象的程序化名称。在代码中使用此名称来引用Command对象。
  Connection:对Connection对象的引用,Command对象将使用该对象与数据库通信。
  CommandType:Text | StoreProduce | TableDirect。
  CommandText:SQL语句 | StoreProduce
  Parameters:命令对象包含的参数。  
  可以通过一下三种方式来创建Command对象:
方式一
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = cn.CreateCommand();
cmd.CommandText = strSQL;
方式二
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand();
cmd.CommandText = strSQl;
cmd.Connection = cn;方式三
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand(strSQL, cn);
  2.Command对象参数
  常用属性如下:
  ParameterName:参数名称,如"@CatID"。
  DbType,SqlType,OleDbType:参数的数据类型。
  Direction:ParameterDirection枚举值。
                   ParameterDirection.Input(默认值)| ParameterDirection.InputOutput |
                   ParameterDirection.Output | ParameterDirection.ReturnValue
  3.执行
  四种执行方式:
ExecuteNonQuery() 返回受命令影响的行数。
ExecuteScalar()   返回第一行第一列(使用与集函数)。如Count(*),Sum,Avg等聚合函数。      
ExecuteReader() 返回一个DataReader对象。如果SQL不是查询Select,则返回一个没有任何数据的System.Data.SqlClient.SqlDataReader类型的集合(EOF)。
ExecuteXmlReader()返回一个XmlReader对象。
  4.参数化查询

使用示例

string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;"
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
strSQl = "SELECT OrderID,CustomerID,EmployeeID,OrderDate FROM Order WHERE CustomerID = ?";
OleDbCommand cmd = new OleDbCommand(strSQl,cn)
cmd.Parameters.Add("@CustomerID",OleDbType.Wchar,5);
cmd.Parameters[0].Value = "ALFKI";
OleDbDataReader rdr = cmd.ExecuteReader();

----------------------------------------------------------------------------------------------------------------------------

Connection对象可用于连接到数据库管理数据库的事务。

1.Connection对象的创建

      4种数据库连接方式:
    OLEDB:System.Data.Oledb.OledbConnection
    SQL:System.Data.SqlCilent.SqlConnection
    ODBC:System.Data.Odbc.OdbcConnection
Oracle:System.Data.OracleClient.OracleConnection
      我们来看一个OleDbConnection创建的实例,一共有2种方法。
第一种:创建一个没有初始化的OleDbConnection对象,然后用ConnectionString来初始化。
创建Connection对象
String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn;
cn = new OleDbConnection();
cn.ConnectionString = strConn;
第二种:使用构造函数来初始化OleDbConnection对象。
创建Connection对象
String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

OleDbConnection cn;

cn = new OleDbConnection(strConn);

2.连接字符串
连接字符串的几个常用参数:
Provider:这个属性用于设置或返回连接提供程序的名称,仅用于OleDbConnection对象。
Connection Timeout或Connect Timeout:在中止尝试并产生异常前,等待连接到服务器的连接时间长度(以秒为单位)。默认是15秒。
Initail Catalog:数据库的名称
Data Source:连接打开时使用的SQL Server名称,或者是Microsoft Access数据库的文件名。
Password:SQL Server帐户的登录密码。
User ID:SQL Server登录帐户。
Integrated Security或Trusted Connection:此参数决定是否是安全连接。可能的值有True、False和SSPI(SSPI是True的同义词)。
Persist Security Info:当设置为False时,如果连接是打开的或曾经处于打开状态,那么安全敏感信息(如密码)不会作为连接的一部分返回。设置属性值为True可能有安全风险。False是默认值。
3.打开和关闭连接
Open 方法:打开连接   
Close 方法:关闭连接
注:如果使用了连接池,关闭连接对象不会真正地关闭对数据源地连接。
如果只用DataAdapter,就不必显式地打开和关闭连接。当调用这些对象的方法时(Fill方法、Update方法)会自动检查连接是否打开。
DataReader对象
1.DataReader对象概述
DataReader对象只能对查询获得的数据集进行自上而下的访问,但效率很高。如果仅仅是访问数据的话,可以使用DataReader。但DataReader要求一直连接,所以将结果的一小部分先放在内存中,读完后再从数据库中读取一部分,相当于一个缓存机制。这对于查询结果百万级的情况来说,带来的好处是显而易见的。
  DataReader对象有如下几个特点:
快速访问数据。由于DataReader对象是只进和只读的,所以开销相对较小,速度比DataSet快。
只进和只读。不能处理数据,只能显示数据。
自己管理连接。DataAdapter对象可以自动地打开和关闭连接,DataReader对象必须显式地打开和关闭连接。
使用较少地服务器资源。
  2.创建DataReader对象
  具体步骤
  (1)创建和打开数据库连接。
  (2)创建一个Command对象
  (3)从Command对象中创建DataReader。
  (4)执行ExecuteReader对象。
  (5)使用DataReader对象
  (6)关闭DataReader对象
  (7)关闭Connection对象。
DataReader对象创建示例

DataReader对象使用示例
//打开Connection并创建Command
SqlConnection conn = new SqlConnection("data source=localhost;integrated security=true;initial catalog=pubs;");
conn.Open();
SqlCommand cmdAuthors = new SqlCommand("select * from Authors", conn);

//创建DataReader对象并读取数据
SqlDataReader dr;
dr = cmdAuthors.ExecuteReader();
while(dr.Read())

{

  ListBox.Items.Add(dr["au_lname"]+","+dr["au_fname"]);

}
//关闭DataReader和Connection
dr.Close();
conn.Close();

  当使用DataReader对象进行连接时,需要使用Try...Catch...Finally语句,这样可以确保若在某方面失败,连接将会关闭。否则,连接会无限期保持打开状态。
捕捉错误

try

{

   conn.Open();

   dr = cmdAuthors.ExecuteReader();

   //使用DataReader中返回的数据

}

catch

{
    //错误处理
}
finally
{
    dr.Close();

    conn.Close();

}


作者: 许庭洲    时间: 2012-9-5 07:58
值得收藏和学习ing!
作者: 资建文    时间: 2012-9-5 10:33
哟西 !   好东西   直接收藏
作者: 段慧林    时间: 2012-9-5 11:37
太常用的知识点了。。。
作者: 卢京    时间: 2012-9-5 11:49
支持楼主

作者: 李后量    时间: 2012-9-5 15:36
楼主好细心哦,省得我们再整理啦~~~~~
作者: 袁雅墨    时间: 2012-9-5 16:12
呵好东西 一起分享。实在是看到这ADO的时候感觉真有点难。所以看了这个之后觉得还有点头绪了
作者: 袁雅墨    时间: 2012-9-5 16:13
资建文 发表于 2012-9-5 10:33
哟西 !   好东西   直接收藏

大家一起加油

作者: 袁雅墨    时间: 2012-9-5 16:14
李后量 发表于 2012-9-5 15:36
楼主好细心哦,省得我们再整理啦~~~~~

呵… 我是自己有 这样的感受了你们一开始学这个的时候觉得难吗?
作者: 袁雅墨    时间: 2012-9-5 16:14
卢京 发表于 2012-9-5 11:49
支持楼主

谢谢……呵
作者: 徐阳    时间: 2012-9-5 17:50
太细心了,感谢{:soso_e113:}
作者: 袁雅墨    时间: 2012-9-5 17:50
谢谢  郑文你给我评的技术分……我还不知道这样可以得到技术分了呵
作者: 袁雅墨    时间: 2012-9-5 17:59
徐阳 发表于 2012-9-5 17:50
太细心了,感谢

呵大家互相帮助……
作者: 资建文    时间: 2012-9-5 22:01
确实很细心 啊   哈哈  得分那是必须的
作者: 李 玉林    时间: 2012-9-6 20:29
谢谢楼主分享 收藏了
作者: 李后量    时间: 2012-9-7 19:27
袁雅墨 发表于 2012-9-5 16:14
谢谢……呵

也不是难,就是得记忆,多看看就好了吧:P
作者: 袁雅墨    时间: 2012-9-7 22:41
李后量 发表于 2012-9-7 19:27
也不是难,就是得记忆,多看看就好了吧

因为以前没接触过.所以觉得难.现在好多了.呵还得加油..
作者: 王荟越    时间: 2012-9-14 09:42
很全面的,值得收藏,对学习ADO很有帮助
作者: 穆爱明    时间: 2013-7-9 09:10
学习一下,感谢分享!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2