当前位置:编程学习 > asp >>

ADO.NET的记忆碎片(一)

 

Connection类

Connection 对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在ADO.NET 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。Connection类的构造有两种方式:

     string strConn ="...";//连接字符串

1、SqlConnection cn = new SqlConnection(strConn);

2、SqlConnection cn = new SqlConnection();

     cn.ConnectionString = strConn;

其中连接字符串里面有一些信息要记住,主要包含:服务器实类、数据库、登录服务器的用户名和密码等等,还有其他就不一一列出。

那么我们就简单的写一个连接字符串:

   string strConn = "Data Source=.;Initial Catalog=Northwind;User ID=lmf;Password=123456";

这是一个最简单的连接字符串了,是基于这种形式的编排的:key=value; 不过说长不长说短不短的,要是记不住里面的key怎么办呢,可以下面这个办法解决:

  SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();

  bldr.DataSource=".";

  bldr.InitialCatalog="Northwind";

  bldr.UserId="lmf";

  bldr.Password="123456";

SqlConnectionStringBuilder类是net类库的一个内置类,ConnectionString中的key的name都在SqlConnectionStringBuilder类实现了属性,可以对应对这些属性赋值,最后调用bldr.ConnectionString属性就可以得到想要的连接字符串了。

 

Command类

Command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连结到数据源。Command类的构造有三种方式:

    string strConn ="...";//连接字符串

    string strSql = "select * from tableName";

    SqlConnection cn = new SqlConnection(strConn);

    cn.Open();

1、SqlCommand cmd = new SqlCommand();

     cmd.Connection = cn;

     cmd.CommandText = strSql;

2、SqlCommand cmd = new SqlCommand(strSql,cn);

3、SqlCommand cmd = cn.CreateCommand();

     cmd.CommandText = strSql;

在对于Command类进行构造完成之后,就是相当于我们在数据库的客户端连接了服务器,并且写下了需要的SQL语句,不过还没有运行SQL语句。接下来就是应该执行SQL语句了。使用SqlCommand执行查询,ExecuteReader()方法:

   SqlDataReader rdr = cmd.ExecuteReader();

从代码看出,ExecuteReader方法返回一个SqlDataReader对象,就是这个对象来检查查询的结果。SqlDataReader是基于流的方式查询结果。在同一时间可以查看结果中的一行,在移到下一行时,上一行就不能再次访问。有多种方式访问特定的列,基于字段名称或基于序号的查询。

遍历查询的结果:

   while(rdr.Read())

   {

       Console.WriteLine("{0}--{1}",rdr[0],rdr["CustomerName"]);   

   }

   rdr.Close();

以上的代码中,Read()方法的调用同时完成了两项任务:第一,将SqlDataReader放置在结果集的下一行。第二,方法返回一个boolean值,其指示是否存在可运行行。另外要说明一点在Command类执行ExecuteReader()方法返回的rdr的时候,不能直接访问结果集的第一行数据,要在rdr运行Read()方法之后才能访问结果集的第一行。

有时候一个结果集是一个一行一列的,用这个方法的可以实现不过成本太大,可以用这样的方式解决,调用ExecuteScalar()方法:

   object obj = new cmd.ExecuteScalar();

ExecuteScalar()方法是返回一个object类型的值。

执行不返回结果集的查询,调用ExecuteNonQuery()方法:

   cmd.ExecuteNonQuery();

但是这不能看出SQL语句是否成功执行,其实ExecuteNonQuery()返回int数值。

执行不返回结果集的查询一般有两种情况:www.zzzyk.com

1、数据操作语言查询(DML):insert、update、delete 这三种操作是不返回结果集的。

2、数据定义语言查询(DDL):create table 、alter view 、drop proc

如果是DML语句,返回的int数值是改变数据库表的多少行数

如果是DDl语句,返回的int是-1;

 


摘自 八神吻你
补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,