关于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();

 Connection
{
    private static SqlConnection sqlServerConnection;

    
//返回sqlConnection
    public static SqlConnection sqlDBConnection
    {
        
get
        {
            
//判断连接是否已经存在打开
            if (sqlServerConnection == null || sqlServerConnection.State == ConnectionState.Closed)
            {
                
//新建连接
                sqlServerConnection = new System.Data.SqlClient.SqlConnection();

                sqlServerConnection.ConnectionString 
= /*连接字符串*/;
                
try
                {
                    
//打开连接
                    sqlServerConnection.Open();
                }
                
catch (Exception ee)
                {
                    
throw new Exception/*弹出异常*/
                }

            }
            
//返回成功打开的连接
            return (sqlServerConnection);
        }
    }
}


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类型输出Ado.net 第一集
}

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


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

先写这么多...

相关文章:

  • 2021-12-10
  • 2022-12-23
  • 2021-12-12
  • 2021-10-11
  • 2021-11-16
  • 2022-01-25
猜你喜欢
  • 2022-12-23
  • 2021-08-12
  • 2022-12-23
  • 2022-02-26
  • 2021-06-06
  • 2021-11-25
  • 2021-10-03
相关资源
相似解决方案