您的位置:首页 > 数据库

SqlDataAdapter的用法

2009-11-08 12:44 369 查看
用于填充 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: