用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。
(一)、一般情况,用于查询数据库,并填充DataSet集比较多, 如下:
SqlConnection conn = new SqlConnection(sqlConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = commandText;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
}
(二)、这里主要总结一下批量insert和批量update的操作
SqlDataAdapter用于批量更新的用法:
A、批量insert:使用一个状态链接,一次插入N条数据,可以提高效率。
举例:
第一步:
//先构造DataTable,包括列名和数据。
DataTable shuttleTable = new DataTable();
//这里不再构造,仅声明,关于构造和组织数据,请参考DataTable的用法
第二步:
//构造SqlDataAdapter
SqlConnection conn = new SqlConnection("Data Source=JFSYS-PEIJIHUI;Initial Catalog=BTRC_2;User ID=sa;Password=sa2006sa; Connect Timeout=10");
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
第三步:
//执行更新操作
adapter.Update(shuttleTable);
B、批量update。update操作和insert操作有一定区别, 关键是要让状态链接知道这是更新操作,而不是insert操作
举例: 第一步;(与insert操作区别在于:填充数据的时候不同)
ataTable shuttleTable = new DataTable();
DataRow row;
int tempShuttleID = thisShuttleId;
tempShuttleID++;
row = shuttleTable.NewRow();
row["标识"] = 1;
shuttleTable.Rows.Add(row);
//需要使用AcceptChanges()函数
shuttleTable.AcceptChanges();
//接下来,填充其它数据,这时候喜欢已经认为是update状态了
shuttleTable.Rows[0]["方向编号"] = 19;
第二步:(同insert)
//构造SqlDataAdapter
SqlConnection conn = new SqlConnection("Data Source=JFSYS-PEIJIHUI;Initial Catalog=BTRC_2;User ID=sa;Password=sa2006sa; Connect Timeout=10");
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
第三步:
adapter.UpdateCommand = new SqlCommand("UPDATE [车次_一票制] SET [方向编号]=@方向编号 WHERE 标识=@标识", conn);
adapter.UpdateCommand.Parameters.Add("@标识", SqlDbType.Int, 10, "标识");
adapter.UpdateCommand.Parameters.Add("@方向编号", SqlDbType.Int, 10, "方向编号");
//更新
adapter.Update(shuttleTable);
总结,批量更新和批量插入差别不大,最重要的一点儿是,向DataTable填充数据时,有区别。如果是update操作,一定得有 shuttleTable.AcceptChanges();
另外,就是使用不同得命令,insert操作用:adapter.InsertCommand
update操作用:adapter.UpdateCommand