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;
连接类
SqlCommand :
执行存储过程 :
执行SQL 语句:
SqlCommand 的执行方法有4个 :
SqlDataReader: 以只进流的方式读取SQL数据库
SqlDataReader配合SqlCommand的使用:
注意: 使用SqlDataReader , 在他未关闭时会占用数据库的链接. 所以,如果想在使用同一个连接进行数据库操作时 . 必须先关闭 SqlDataReader .
先写这么多...
基于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();
Conn.ConnectionString = "连接字符串" ;
Conn.Open();
![](/Images/OutliningIndicators/ContractedBlock.gif)
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 此时这个便是返回值
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 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类型输出![](https://www.cnblogs.com/Images/dot.gif)
}
// 关闭并释放资源
Sdr.Close();
Sdr.Dispose();
comm.Dispose();
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类型输出
![](https://www.cnblogs.com/Images/dot.gif)
}
// 关闭并释放资源
Sdr.Close();
Sdr.Dispose();
comm.Dispose();
注意: 使用SqlDataReader , 在他未关闭时会占用数据库的链接. 所以,如果想在使用同一个连接进行数据库操作时 . 必须先关闭 SqlDataReader .
先写这么多...