int UpdateCom(DataSet ds)
{
int count1=ds.Tables[0].Rows.Count;
int count=0;
using(System.Data.SqlClient.SqlConnection cn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]))
{
cn.Open();
using(System.Data.SqlClient.SqlDataAdapter dr=new SqlDataAdapter())
{
dr.InsertCommand=new SqlCommand();
dr.InsertCommand.CommandText="insert into ET_jc_tsbsc(BSC_NO,ET_NO,FPXX,BZ) values(@bsc_no,@et_no,@fpxx,@bz)";
dr.InsertCommand.CommandType=CommandType.Text;
dr.InsertCommand.Connection=cn;
dr.InsertCommand.Parameters.Add(new SqlParameter("@bsc_no",SqlDbType.VarChar));
dr.InsertCommand.Parameters.Add(new SqlParameter("@et_no",SqlDbType.Int));
dr.InsertCommand.Parameters.Add(new SqlParameter("@fpxx",SqlDbType.VarChar));
dr.InsertCommand.Parameters.Add(new SqlParameter("@bz",SqlDbType.VarChar));
//
count=dr.Update(ds,ds.Tables[0].TableName);
//
}
}
return count;
}dr.update没什么反映啊!也不报错
<2>
怎么一次更新DataSet里面10000W条以上的记录???
谢谢回复!

解决方案 »

  1.   

    看看ds.Tables[0] 的行状态是否为更改状态
      

  2.   

    using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(queryString, connection);
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);        connection.Open();        DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, tableName);        //code to modify data in DataSet here        //Without the SqlCommandBuilder this line would fail
            adapter.Update(dataSet, tableName);        return dataSet;
        }SqlDataAdapter 不会自动生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。但是,如果设置了 SqlDataAdapter 的 SelectCommand 属性,则可以创建一个 SqlCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。然后,SqlCommandBuilder 将生成其他任何未设置的 Transact-SQL 语句。 每当设置了 DataAdapter 属性,SqlCommandBuilder 就将其本身注册为 RowUpdating 事件的侦听器。一次只能将一个 SqlDataAdapter 与一个 SqlCommandBuilder 对象(或相反)互相关联。 为了生成 INSERT、UPDATE 或 DELETE 语句,SqlCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索到元数据后(例如在第一次更新后)更改 SelectCommand,则应调用 RefreshSchema 方法来更新元数据。 SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回,就会产生 InvalidOperation 异常,不生成命令。 
      

  3.   

    每次Update后都调用AcceptChange方法ds.Tables[0].RejectChanges();
      

  4.   

    我的dataset是从Excel读取的一个数据集合,没做任何更改,应该是没任何状态 ,那怎么让他状态改变,插入数据??
      

  5.   

    顶!!!SqlCommandBuilder builder=newSqlCommandBuilder(adapter);