C#操作SqlServer数据库的常用对象,及其方法

首先放出所常用的对象:

System.Data.SqlClient.SqlConnection

System.Data.SqlClient.SqlCommand

System.Data.SqlClient.SqlDataAdapter

SqlConnection对象用于连接SqlServer数据库,SqlCommand对象用于执行sql语句,至于SqlDataAdapter对象,后面再说。

一、SqlConnection对象

先看代码:

string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
SqlConnection conn = new SqlConnection(strConn); //创建连接对象
conn.Open();//打开连接

很容易理解,会将上面代码写成:

string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
    try{    
        conn.Open();//打开连接
    }catch(Exception e){
        //anything
    }finally{
        conn.Close();
    }
}

SqlConnection对象就是只起到连接数据库作用。

二、SqlCommand对象

SqlCommand对象用于数据的增删改查操作,所以下面介绍SqlCommand类下面的一些方法:

1、ExecuteNonQuery(); 

  ExecuteNonQuery(),看方法名字有Non,可以联想到其可能没有返回值。其实它的返回值类型为int型。当select操作时,返回-1;当执行增加,删除,修改数据时,返回影响的行数。(PS,此方法意义在于执行数据的增、删、改操作)

2、ExecuteReader();

  ExecuteReader(),该方法用于数据的查询,执行后的返回值类型是SqlDataReader,可以通过SqlDataReader对象下面的Read()方法来对数据集进行遍历,有两种提取数据的手段:SqlDataReader对象["列名"].ToString()SqlDataReader对象[索引].ToString()(这里的索引值从0开始)

代码例子:

string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
    try{    
        conn.Open();//打开连接
        string strSql = "select * from student_tb";//编写sql语句
        SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
        SqlDataReader reader = cmd.ExecuteReader(); //执行sql语句
        while(reader.Read()){//遍历查询到的数据集
            int id = int.Parse(reader[0].ToString());//通过索引得到该列的值
        }
    }catch(Exception e){
        //anything
    }finally{
        conn.Close();
    }
}

3、ExecuteScaler(); 

  它的返回值类型是Object类型。也是用于查询,只有确定查询之后的结果只有一个值得情况下,可以使用此方法。

string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
    try{    
        conn.Open();//打开连接
        string strSql = "select stu_name from student_tb";//编写sql语句
        SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
        string stuId = (string)cmd.ExecuteScaler(); //执行sql语句
        
    }catch(Exception e){
        //anything
    }finally{
        conn.Close();
    }
}

三、SqlDataAdapter对象 

上面的查询方法在处理少量返回数据时非常方便,但遇到需要处理大量返回数据集时,那么需要用到SqlDataAdapter对象。

SqlDataAdapter类提供多个构造方法:

1、SqlDataAdapter(strSql,strConn) ,strSql为字符串形式sql语句,strConn跟上面代码中的strConn变量一样

2、SqlDataAdapter(strSql, conn) ,strSql为字符串形式sql语句,conn为SqlConnection对象

3、SqlDataAdapter(cmd) , cmd为SqlCommand对象

我们常常使用SqlDataAdapter来填充一个数据表,其中可以有两种操作,可以填充DataSet对象,也可以填充DataTable对象。

string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
    try{    
        conn.Open();//打开连接
        string strSql = "select * from student_tb";//编写sql语句
        SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
        SqlDataAdapter sda = new SqlDataAdapter(sc);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        //DataTable dt = new DataTable();
        //sda.Fill(dt);
    }catch(Exception e){
        //anything
    }finally{
        conn.Close();
    }
}

其实SqlDataAdapter内部通过SqlDataReader获取数据,而默认情况下SqlDataReader不能获知其查询语句对应的数据库表名,所以上面代码会在DataSet中创建一个新的DataTable,这个新的DataTable会拥有名为返回数据的相应列名,但是DataTable对象的名称是Table,我们有时想得到的table名是我们自定义的,则可以添加:

 

//创建SqlDataAdapter对象之后,创建DataSet对象之前,“Table”是默认的Table对象名
sda.TableMappings.Add("Table""MyTableName");

 

或者,直接使用Fill()方法的重载:

sda.Fill(ds, "MyTableName");

以上就是本次总结c#操作SqlServer常用的类和方法,记录下来,方便以后可以查阅。

 

posted @ 2018-10-10 21:44  KamShing  阅读(1235)  评论(0编辑  收藏  举报