SqlDataAdapter批量插入和更新数据 使用方法

用于填充 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

你可能感兴趣的:(数据库,sql,SQL,Sql,数据库)