一、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、利用一个现有连接创建一个Command,用以执行sql指令;
SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
SqlCommand commands = connection.CreateCommand();
2、通过SqlCommand创建对象
SqlCommand cmd = new SqlCommand();
- SqlCommand默认属性说明
属性 |
初始值 |
说明 |
CommandType |
CommandType.Text |
命令类型 |
CommandText |
“” |
执行文本内容 |
Connection |
null |
连接对象 |
CommandTimeout |
30 |
超时时间 |
- CommandType说明
CommandType.Text |
文本 |
枚举属性 |
说明 |
CommandType.TableDirect |
表名 |
CommandType.StoredProcedure |
存储过程名称 |
- 执行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();
}
- 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 数据流读取器
- 创建对象
//创建SqlDataReader对象
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
- 属性
方法 |
说明 |
Depth |
嵌套深度 |
FieldCount |
获取列数 |
HasRows |
是否包含行 |
IsClosed |
SqlDataReader是否关闭 |
RecordsAffected |
执行T-SQL语句所插入、修改、删除的行数 |
VisibleFieldCount |
未隐藏的字段数目 |
- 方法
- 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())之后,因为读取一个数据集之后才能读取下一个数据集
六、SqlTransaction 事务
- 开始数据库事务
//开始数据库事务
SqlTransaction trans = connection.BeginTransaction();
//给SqlCommand绑定事务
cmd.Transaction = trans;
//回滚事务
trans.Rollback();
//提交事务
trans.Commit();
- 事务存储点
//创建存储点
transaction.Save("存储点");
//回滚存储点
transaction.Rollback("存储点");
七、SqlDataAdapter 填充 System.Data.DataSet 和更新 SQL Server 数据
- 创建对象
SqlDataAdapter sda = new SqlDataAdapter("sqltxt", conn);
- 添加数据
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);
- 修改数据
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);
- 删除数据
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;
}
}
}