C# 高级编程(笔记7)

关于ADO.NET:

1.数据源

   数据源定义的是连接到实际数据库的一条路径而已,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接的,如odbc数据源。也就是说数据源仅仅是数据库的连接名称,一个数据库可以有多个数据源连接。

2.ODBC,OLEDB,ADO,ADO.NET的区别

  A. ODBC:底层的数据库访问技术,提供了一组规范的API,只能用于访问关系型数据库,很难访问对象数据库及其他非关系型数据库
  B. OLEDB:底层的数据库访问技术,建立在ODBC功能之上的一个开放规范,可以访问关系型和非关系型数据库(信息源)
  C. ADO: 是基于OLEDB的访问接口,它是面向对象的OLEDB技术,继承了OLEDB的优点,属于数据库访问的高层接口。
  D. ADO.NET:
          1)基于OLEDB技术以及.NET Framework类库,可以访问关系型和非关系型数据库/信息源[如:XML, Excel]
          2)ADO.NET附带了3个数据库客户端名称空间,第1个用于SQL Server,第2个用于ODBC数据源,第3个用于通过OLEDB实现的数据库。

 3.高效地使用连接

    一般情况下,当在.NET中使用“稀缺”的资源时,如数据库连接、窗口或图形对象, 最好确保每个资源在使用完后立即关闭

    主要有两种方式可以确保数据库连接等类似的“稀缺”资源在使用完后立即释放:

1.第一种方式----利用try...catch...finally语句块
try
{
    conn.Open();
}
catch()
{
}
finally
{
    conn.Close();    //缺点是需记住在finally方法中手动关闭连接
}

2.第二种方式----使用using语句块
只有实现了IDisposable接口的对象,才可以对其使用using语句

using(SqlConnection conn = new SqlConnection( source ))
{
    conn.Open();
    //Do something useful
}
----using语句对应的IL Code是try{}...finally{}语句块,在finally块中调用Dispose()方法

4.定义命令(Command)

   Command有三种类型:
   A.CommandType.Text(默认):调用SQL子句                 
   B.CommandType.StoredProcedure:调用存储过程       
   C.CommandType.TableDirect[只对OLEDB提供程序有效]:调用完整的表语句(仅从给定的表中选择所有列和行) 

5.执行命令

   A.ExecuteNonQuery()
   这个方法一般用于update、insert或delete语句,其中唯一的返回值是受影响的记录个数。但如果调用带输出参数的存储过程,该方法就有返回值  

   B.ExecuteReader()[长时间占用数据库连接]
   根据使用的提供程序返回一个类型化的DataReader对象,返回的对象可以用于遍历返回的记录.
   例如:
                SqlCommand cmd = new SqlCommand();
                SqlDataReader reader = cmd.ExecuteReader();
                while(reader.Read())
                {
                    //
                }

    C.ExecuteScalar()
    ----返回结果集中第一行第一列的值
    ----该方法返回一个对象,根据需要,可以把该对象强制转换为合适的类型。如果所调用的sQL只返回一列,则最好使用ExecuteScalar方法来检索这一列。这也适合于只返回一个值的存储过程

6.DataSet类

   是数据的离线容器,即一次性把数据读入内存,然后立即关闭数据库连接,会占用较多内存,DataSet类由一组数据表[DataTable对象]组成

7.创建DataTable的3种方式

   A.由运行库生成

  SqlDataAdapter da = new SqlDataAdapter(select, cnnon);
  DataSet ds = new DataSet();
  da.Fill(ds, "Customers"); //填充Customers表

   B.编写代码创建

  DataTable Person = new DataTable("Person");
  Person.Columns.Add(new DataColumn("PersonId",typeof(Int32)));
  ...

    C.在XML的定义文件(XSD)中描述DataTable

8.填充DataSet

   A.用数据适配器填充DataSet
      SqlDataAdapter da = new SqlDataAdapter(select, cnnon);

   B.从XML中填充DataSet类

      DataSet ds = new Dataset();
      ds.ReadXm1(".\\MyData.Xml");

posted on 2013-06-01 14:52  Gcam  阅读(114)  评论(0编辑  收藏  举报

导航