zoukankan      html  css  js  c++  java
  • 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常用的类和方法,记录下来,方便以后可以查阅。

  • 相关阅读:
    Android三种菜单的使用方式
    Express无法解析POST请求的JSON参数
    reids数据备份与恢复
    docker获取数据库时间相差8小时
    centos添加新用户
    创建一个新的容器并运行一个命令
    docker启动容器时报错unknown shorthand flag: ‘n‘ in -name
    linux查看cpu详细信息
    ValueError: Shapes (None, 1) and (None, 2) are incompatible
    Python:IOError: image file is truncated 的解决办法
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/9767913.html
Copyright © 2011-2022 走看看