ado.net操作数据库常用方法集锦

ado.net中常用数据库操作方法:

(1)SqlDataReader(数据库只读操作)

       提供一种从 SQL Server 数据库读取行的只进流的方式,它既然提供只读属性,那么显然当只需要执行读取操作的时候执行,在执行select语句的时候很有必要,

  因为,就执行效率而言,DataReader的效率是最高的。但是,它存在的弊端是,当SqlDataReader没有关闭之前,数据库会一直保持open状态,所以在使用  

  SqlDataReader时,使用完毕应该马上调用close()方法,当然,另一方面,一个连接只能被一个sqldatareader使用,故此需要及早关闭。

SqlCommand cmd=new  SqlCommand(sqlStr,conn);
SqlDataReader reader=cmd.ExecuteReader();
//如果读到了数据,则调用Read()方法返回值为true
if(reader.Read())
{
      //拿到所读到的数据的第一列
  if(!reader.IsDBNull(0))
  {
            //拿到第一列的值
            string str=reader.GetString(0);
         .......
  }
  if(!reader.IsDBNull(1))
  {
           //拿到第二列的字节数据,并将所读到的图片数据输出
           byte[] data=reader.GetSqlBytes[2];
           Response.ContentType="image/gif";
           Response.OutputStream.Write(data,0,data.Length);
        .......
  }
     ......
      reader.Close();
      cmd=null;
}    

 

 (2)SqlDataAdapter与DataSet

        ado.net提供很多数据库操作方法,但基本可以分为两大类,一种是以SqlDataReader为主,一行一行的读取数据,另一种就是SqlDataAdapter结合DataSet使用的数据库操作方法

        SqlDataReader是直接与数据库连接,使用完即可断开的,其效率较高。而SqlDataAdapter是把数据库中的数据缓存到内存中,以DataSet数据集的方式进行填充。效率较低

        

 //sqlStr为连接查询字符串,conn为连接字符串
SqlDataAdapter sda=new SqlDataAdapter(sqlStr,conn);
 
// 新建数据集
DataSet ds=new DataSet();

//填充数据集
//sda.Fill(ds,"user");    //用Fill方法填充DataSet,建立名为user表的映射
sda.Fill(ds);                //另一种填充数据集方式
//DataTable dt=ds.Tables["user"];   //将数据表的数据复制到DataTable对象

DataTable dt=ds.Table[0];             //另一种方式复制到DataTable对象
DataRowCollection rows=dt.Rows; //获取数据行
if(rows.count>0)
{
      ........
}

 

(3) SqlParameter

         一般来说,当输入的sql语句比较复杂的时候,使用SqlParameter具有简单高效,一目了然的效果

 
string sqlStr="update Jscores set usual=@intUsual,final=@intFinal ,score=@intScore ,memo=@strMemo  where Sno=@stuNo and cno=@num ";
List<SqlParameter> list=new List<SqlParameter>();
//为sql语句中的每个变量进行赋值
list.Add(new SqlParameter("@intUsual", intUsual));
list.Add(new SqlParameter("@intFinal", intFinal));
list.Add(new SqlParameter("@intScore", intScore));
list.Add(new SqlParameter("@stuNo", stuNo));
list.Add(new SqlParameter("@num", num));
list.Add(new SqlParameter("@strMemo", strMemo));
// 将需要执行的命令传给SqlCommand
SqlCommand cmd=new SqlCommand(sqlStr,conn);
foreach(SqlParameter p in list)
    
    cmd.Parameters.Add(p) ;

int ret=cmd.ExecuteNonQuery();
//当然上述过程可以合二为一
//    SqlCommand cmd = new SqlCommand("update JScores set usual=@intUsual,final=@intFinal ,score=@intScore ,memo=@strMemo  where Sno=@stuNo and cno=@num ", conn);
//    cmd.Parameters.AddWithValue("@intUsual", intUsual);
//    cmd.Parameters.AddWithValue("@intFinal", intFinal);
//    cmd.Parameters.AddWithValue("@intScore", intScore);
//    cmd.Parameters.AddWithValue("@stuNo", stuNo);
//    cmd.Parameters.AddWithValue("@num", num);
//    cmd.Parameters.AddWithValue("@strMemo", DBNull.Value);

//    int ret = cmd.ExecuteNonQuery();

 

 

 

 

 

    

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。