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

 

 

 

 

 

    

转载于:https://www.cnblogs.com/niexianxue/p/4436073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值