代码改变世界

Ado.net 第一集

2007-11-16 01:24  Animax!  阅读(247)  评论(0编辑  收藏  举报
关于ADO.net


基于SQL操作的,数据接口的对象:
SqlConnection :  建立连接
SqlCommand :     执行SQL语句或执行存储过程
SqlDataReader :  读取记录
SqlDataAdapter : 把取得的记录结果存储到 Dataset

ADO.net 也提供其他不同数据库的链接对象。 但使用方式基本是相同的。



SqlConnection 数据库连接:
    提供数据库连接字符串就可以进行数据库的链接, 对数据库进行任何操作前。都必须打开数据库连接。

首先需要引用命名空间 : using System.Data.SqlClient;    
   
    SqlConnection Conn = new System.Data.SqlClient.SqlConnection();
    Conn.ConnectionString 
= "连接字符串" ;
    Conn.Open();

连接类


SqlCommand :
执行存储过程 :

SqlCommand commUpload = new SqlCommand(/*存储过程名称*/, sqlDBConnection);
commUpload.CommandType 
= System.Data.CommandType.StoredProcedure; // 表明这是存储过程

SqlParameter Par 
= commUpload.Parameters.Add(/*参数名*//*System.Data.SqlDbType内的枚举值,表示参数类型*/ );
Par.Value 
= /*输入参数的值*/;

SqlParameter ParOutput 
= commUpload.Parameters.Add(/*参数名*//*System.Data.SqlDbType内的枚举值,表示参数类型*/ );
SQLReBalance.Direction 
= System.Data.ParameterDirection.Output; //标识这个参数是传出的

commUpload.ExecuteNonQuery(); 
//冇返回值执行

// ParOutput.Value 此时这个便是返回值


执行SQL 语句:
String SQLStr = "update A set B = @B Where C = @C" ;
SqlCommand comm 
= new SqlCommand(SQLStr, /*打开了的数据库连接:SqlConnection*/);

comm.Parameters.AddWithValue(
"@B", B的值);
comm.Parameters.AddWithValue(
"@C", C的值);

comm.ExecuteNonQuery();


SqlCommand 的执行方法有4个 :

  • ExecuteNonQuery : 执行语句,只返回语句所影响的行数
  • ExecuteReader : 执行语句,并以SqlDataReader类型返回语句的结果
  • ExecuteScalar : 执行语句,并以object类型返回结果的第一行第一列的信息
  • ExecuteXmlReader : 执行语句,并以XmlReader类型返回语句的结果


SqlDataReader: 以只进流的方式读取SQL数据库

SqlDataReader配合SqlCommand的使用:

String SQLStr = "SELECT A,B,C FROM Table WHERE A = @A" ;
SqlCommand comm 
= new SqlCommand(SQLStr, /*打开了的数据库连接:SqlConnection*/);

comm.Parameters.AddWithValue(
"@A", A的值);

SqlDataReader Sdr 
= comm.ExecuteReader(); //这里返回一个SqlDataReader类型的结果

while (Sdr.Read()) //一行行地读取Sdr中的记录
{
    Sdr[
"A"] // 获取当前行并且列名为A的那个单元格的值 , 以object类型输出
    
// 也可以用另外一种方法取值 , 用SqlDataReader自带的Get方法组.
    Sdr.GetString(1// 获取当期行第1列的单元格的值,以string类型输出
    sdr.GetInt(2// 获取当期行第2列的单元格的值,以int类型输出
}

// 关闭并释放资源
Sdr.Close();
Sdr.Dispose();
comm.Dispose();


注意: 使用SqlDataReader , 在他未关闭时会占用数据库的链接. 所以,如果想在使用同一个连接进行数据库操作时 . 必须先关闭 SqlDataReader .

先写这么多...