zoukankan      html  css  js  c++  java
  • ADO.NET 常用对象

    一、SqlConnectionStringBuilder 连接字符串

    
    SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder()
    {
        DataSource = ".",//数据库地址
        InitialCatalog = "ADONET",//数据库名称
        UserID = "sa",//用户名
        Password = "123",//密码
    };
    

    二、SqlConnection 连接对象

    //创建对象
    SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
    //打开数据库连接
    connection.Open();
    //关闭数据库连接
    connection.Close();
    

    三、SqlCommand 命令对象

    1. 创建对象
    1、利用一个现有连接创建一个Command,用以执行sql指令;
    SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
    SqlCommand commands = connection.CreateCommand();
    2、通过SqlCommand创建对象
    SqlCommand cmd = new SqlCommand();
    
    1. SqlCommand默认属性说明
    属性 初始值 说明
    CommandType CommandType.Text 命令类型
    CommandText “” 执行文本内容
    Connection null 连接对象
    CommandTimeout 30 超时时间
    1. CommandType说明
    CommandType.Text 文本
    枚举属性 说明
    CommandType.TableDirect 表名
    CommandType.StoredProcedure 存储过程名称
    1. 执行SQL
    • 执行SQL语句文本
    using (SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))
    {
    connection.Open();
    SqlCommand cmd = new SqlCommand()
    {
    CommandType = CommandType.Text,
    CommandText = "select *  from login ",
    Connection = connection,
    };
    var obj = cmd.ExecuteScalar();
    connection.Close();
    }
    
    • 执行存储过程
    using (SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))
    {
      connection.Open();
      SqlCommand cmd = new SqlCommand()
      {
        CommandType = CommandType.StoredProcedure,
        CommandText = "test3",
        Connection = connection,
      };
      var obj = cmd.ExecuteScalar();
      connection.Close();
    }
    
    1. SqlCommand方法说明
    方法 说明
    ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数。
    ExecuteScalar 返回执行结果集中的第一行第一列,如果没有数据,则返回NULL
    ExecuteReader 执行SQL或存储过程,返回的是SqlDataReader类型,主要用来查询

    四、SqlParameter 参数化查询

    //创建对象
    SqlParameter paras = new SqlParameter("@参数名称", "参数内容");
    //创建对象
    SqlParameter paras = new SqlParameter()
    {
      ParameterName = "@参数名称",
      Value = 10,
      SqlDbType = SqlDbType.Int,
      Size = 4
    };
    

    五、SqlDataReader 数据流读取器

    1. 创建对象
    //创建SqlDataReader对象
    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection) 
    
    1. 属性
    方法 说明
    Depth 嵌套深度
    FieldCount 获取列数
    HasRows 是否包含行
    IsClosed SqlDataReader是否关闭
    RecordsAffected 执行T-SQL语句所插入、修改、删除的行数
    VisibleFieldCount 未隐藏的字段数目
    1. 方法
    • GetOrdinal 获取指定列名的列序号(索引号),使用这个方法可以把经常变动的列进行固定
    //通过列名来获取当前列的索引号,这样如果下次你列名顺序发生变化也没有关系
    int name = reader.GetOrdinal("columid"); 
    
    • GetName 获取列名,参数为指定列名的序列号,返回string
    //通过列名所处的索引号来获取列名名称 
    string columnName = reader.GetName(name); 
    
    • IsDBNull 判断当前读取的数据是否为Null,返回类型为Bool 
    reader.IsDBNull(coContactID) ? "NULL" : reader.GetInt32(coContactID).ToString()
    
    • NextResult 当查询为批处理查询时,使用这个方法去读取下一个结果集,返回值为Bool,如果存在多个结果集,则为 true;否则为 false
    //select * from Employee;select * from County,这样的话就可以采用这种方式
    dr.NextResult(); //记住这个要放在while(dr.Read())之后,因为读取一个数据集之后才能读取下一个数据集 
    
    • Read 读取数据

    六、SqlTransaction 事务

    1. 开始数据库事务
    //开始数据库事务
    SqlTransaction trans = connection.BeginTransaction();
    //给SqlCommand绑定事务
    cmd.Transaction = trans;
    //回滚事务
    trans.Rollback();
    //提交事务
    trans.Commit();
    
    1. 事务存储点
    //创建存储点
    transaction.Save("存储点");
    //回滚存储点
    transaction.Rollback("存储点");
    

    七、SqlDataAdapter 填充 System.Data.DataSet 和更新 SQL Server 数据

    1. 创建对象
    SqlDataAdapter sda = new SqlDataAdapter("sqltxt", conn);
    
    1. 添加数据
    SqlDataAdapter sda = new SqlDataAdapter("select * from login", connection);
    SqlCommandBuilder scb = new SqlCommandBuilder(sda);
    DataSet ds = new DataSet();
    sda.Fill(ds);
    DataRow row = ds.Tables[0].NewRow();
    row[0] = "zhanghao";
    row[1] = "mima";
    row[2] = 2;
    ds.Tables[0].Rows.Add(row);
    sda.Update(ds);
    
    1. 修改数据
    SqlDataAdapter sda = new SqlDataAdapter("select * from login", connection);
    SqlCommandBuilder scb = new SqlCommandBuilder(sda);
    DataSet ds = new DataSet();
    sda.Fill(ds);
    ds.Tables[0].Rows[0][1] = "yonghu"; 
    sda.Update(ds);
    
    1. 删除数据
    SqlDataAdapter sda = new SqlDataAdapter("select * from login", connection);
    SqlCommandBuilder scb = new SqlCommandBuilder(sda);
    DataSet ds = new DataSet();
    sda.Fill(ds);
    ds.Tables[0].Rows[0].Delete();
    sda.Update(ds);
    

    八、SQLHelp 封装数据库操作类

     public static class SqlHelper
            {
                private static string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
    
                public static int ExecuteNonQuery(string sql, params SqlParameter[] ps)
                {
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
    
                        SqlCommand cmd = new SqlCommand(sql, conn);
                        cmd.Parameters.AddRange(ps);
    
                        conn.Open();
                        return cmd.ExecuteNonQuery();
                    }
                }
    
                public static Object ExecuteScalar(string sql, params SqlParameter[] ps)
                {
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
                        SqlCommand cmd = new SqlCommand(sql, conn);
                        cmd.Parameters.AddRange(ps);
    
                        conn.Open();
                        return cmd.ExecuteScalar();
    
                    }
                }
    
                public static DataTable ExecuteReader(string sql, params SqlParameter[] ps)
                {
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
                        SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                        sda.SelectCommand.Parameters.AddRange(ps);
                        DataTable dt = new DataTable();
                        sda.Fill(dt);
                        return dt;
                    }
                }
    
                public static DataTable ExecuteReader(string sql, CommandType ct, params SqlParameter[] ps)
                {
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
                        SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
    
                        sda.SelectCommand.Parameters.AddRange(ps);
                        sda.SelectCommand.CommandType = ct;
    
                        DataTable dt = new DataTable();
                        sda.Fill(dt);
    
                        return dt;
                    }
                }
            }
    
  • 相关阅读:
    第一阶段冲刺02
    梦断代码阅读笔记01
    第一阶段冲刺01
    第十周总结报告
    单词统计
    用户模板分析
    第九周总结
    第九周课后作业
    py_11_ 0726
    Day_01
  • 原文地址:https://www.cnblogs.com/95CC/p/6706041.html
Copyright © 2011-2022 走看看