OleDbDataAdapter modiDataAdapter = new OleDbDataAdapter(); 是不是为: OleDbDataAdapter modiDataAdapter = new OleDbDataAdapter(modiCommand); 你看看,我用sql server 2k中定义DataAdapter是要求有一个SelectCommand的! 你试试!
OleDbCommandBuilder modiCommandBuilder = new OleDbCommandBuilder(modiDataAdapter); 建议你不要使用自动生成命令!你自己写update命令!然后自己给参数设置DataSourceColumn和DataRowVersion!
是不是为:
OleDbDataAdapter modiDataAdapter = new OleDbDataAdapter(modiCommand);
你看看,我用sql server 2k中定义DataAdapter是要求有一个SelectCommand的!
你试试!
建议你不要使用自动生成命令!你自己写update命令!然后自己给参数设置DataSourceColumn和DataRowVersion!
lj.Open();
bool allok=false;//是否成功
while(allok==false)
{
System.Data.SqlClient.SqlTransaction tr=lj.BeginTransaction();
try
{
sqlcom1.CommandText="insert into ...";
sqlcom1.Transaction=tr;
sqlcom1.ExecuteNonQuery();
}
tr.Commit();
allok=true;
}
catch
{
tr.Rollback();
}
}
lj.Close();
数据适配器和这一样。
2.是不是你在创建数据适配器时有表联接啊(你给的程序中没有)
如果出现selectcommand中 出现inner join,left join之类的,会回写不成功的。
这个情况更复杂.
要不然就用datatable.primerykey=...
OleDbCommand modiCommand = new OleDbCommand("select * from table1",modiConnection);
OleDbDataAdapter modiDataAdapter = new OleDbDataAdapter();
modiDataAdapter.SelectCommand = modiCommand;//少了这句吧?
OleDbCommandBuilder modiCommandBuilder = new OleDbCommandBuilder(modiDataAdapter);
DataSet modiDataSet = new DataSet();modiConnection.Open();
modiDataAdapter.Fill(modiDataSet,"modiTable");
modiDataSet.Tables["modiTable"].Rows[0][1] = "modi"; //Row[0][1]是肯定存在的
modiDataAdapter.UPdate(modiDataSet,"modiTable");
如果不用自动生成的话,因为我是动态字段,自己生成语句比较麻烦,
不知道有没更好的解决办法,急