一、Connection 连接对象
1. SqlConnection 类
// 数据库连接语句
string connStr = "server=.;database=db_Sys;uid=sa;pwd=123";
// 建立数据库连接
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
2. 配置App.Config文件,设置连接语句
<connectionStrings>
<add name="LocalStr" connectionString="server=.;database=db_Sys;uid=sa;pwd=123"/>
<connectionStrings/>
// 从配置文件中获取连接语句
string connStr = ConfigurationManager.connectionStrings["LocalStr"].connectionString;
3. 连接语句添加设置
超时时间:默认为15s,在连接语句后加timeout重新设置;
连接池:默认开启,在连接语句后加pooling设置。
4. 自动释放 using
// 当执行完毕后,自动释放连接资源
using(SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
}
GC垃圾回收器:只能回收托管资源(.Net CLR 管理的资源),不能回收非托管资源;
using(){}:能释放非托管资源(实现了IDisposable接口)
二、 Command 命令对象
1. SqlCommand类
// 创建命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
// 返回受影响行数
cmd.ExecuteNoQuery();
// 返回第一行第一列数据
cmd.ExecuteScalor();
三、 SqlDataReader 数据读取
1. SqlDataReader类
// 获取reader
SqlDataReader reader = cmd.ExecuteReader();
// Read()使SqlDataReader前进到下一条记录
while(reader.Read())
{
//获取该列名: GetName(); 获取该列的值: GetValue();
}
2. 连接模式 —— 保持连接;SqlDataReader读取行流的方式
四、 SqlDataAdapter 数据适配
1. 中断模式 —— 获取数据后,中断连接
2. SqlDataAdapter类
// 建立数据适配器
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
// 解决sql注入
SqlParameter[] paras = {};
adapter.SelectedCommand.Parameters.AddRanges(paras);
// 数据填充
DataTable dt = new DataTable();
adapter.Fill(dt);
五、事务,多次执行
string connStr = ConfigurationManager.ConnectionStrings["LocalStr"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
var tran = conn.BeginTransaction(); // 开启事务
try
{
string str = "delete from tb_Login where ID=@Id";
SqlCommand cmd = new SqlCommand(str, conn, tran);
SqlParameter para = new SqlParameter("@Id", SqlDbType.Int);
int[] id = { 5, 6, 7, 8 };
foreach (int i in id)
{
para.Value = i;
cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
tran.Commit(); // 提交
}
catch (Exception)
{
tran.Rollback(); // 回滚
}



4333

被折叠的 条评论
为什么被折叠?



