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常用的类和方法,记录下来,方便以后可以查阅。

  • 相关阅读:
    Active Record 和 Data Mapper 是 ORM 的常见实现方式
    指令重排
    Borg、Omega和Kubernetes:谷歌十几年来从这三个容器管理系统中得到的经验教训 原创: 韩佳瑶 译 Docker 2016-03-23Borg、Omega和Kubernetes:谷歌十几年来从这三个容器管理系统中得到的经验教训 原创: 韩佳瑶 译 Docker 2016-03-23
    等待 Redis 应答 Redis pipeline It's not just a matter of RTT
    阿里巴巴微服务与配置中心技术实践之道 配置推送 ConfigurationManagement ConfigDrivenAnyting
    c3p0数据库连接池 原创: Java之行 Java之行 5月8日 一、连接池概述 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程
    KA,连接池居然这么简单? 原创: 58沈剑 架构师之路 3月20日
    连接池大小调优 原创: ImportNew ImportNew 2017-06-07
    从另一个线程获取消息的确认
    制作织梦模板channelartlist超强解析
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/9767913.html
Copyright © 2011-2022 走看看