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默认属性说明
属性初始值说明
CommandTypeCommandType.Text命令类型
CommandText“”执行文本内容
Connectionnull连接对象
CommandTimeout30超时时间
  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是否包含行
IsClosedSqlDataReader是否关闭
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;
                }
            }
        }

转载于:https://www.cnblogs.com/95CC/p/6706041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值