public static OleDbDataAdapter AdapterUpdate(string SelectString, DataTable tableName,string connectionString) { OleDbDataAdapter Adapter = new OleDbDataAdapter();
using (OleDbConnection connetion = new OleDbConnection(connectionString)) { Adapter.SelectCommand = new OleDbCommand(SelectString, connetion); OleDbCommandBuilder builder = new OleDbCommandBuilder(Adapter); Adapter.UpdateCommand = builder.GetUpdateCommand();
{ OleDbDataAdapter Adapter = new OleDbDataAdapter();
using (OleDbConnection connetion = new OleDbConnection(connectionString))
{
Adapter.SelectCommand = new OleDbCommand(SelectString, connetion); OleDbCommandBuilder builder = new OleDbCommandBuilder(Adapter);
Adapter.UpdateCommand = builder.GetUpdateCommand();
Adapter.Update(tableName);
table.AcceptChanges();
return Adapter;
}
}
//调用
DataTable table = (DataTable)dataGridView1.DataSource;
AdapterUpdate(SelectSql, table,connectionString)//SelectSql为查询语句 connectionString //为数据库连接语句
第二个用来调跨行的多行数据方便编辑并更新,且第二个DataTable重新组织并添加了指导文字的列,
因此第二个DataTable就不同第一个DataTable,不知道这样你上面的代码还能行?DENQH的代码是否对更新数据库效率比较高,如果效率高,那么,像我这样不同的DataTable是否适用?
还是我该采用什么样的方式才能用到你的代码,从而更高效,给个建议和说明该如何做.
待研究,目前急着马上投入使用,所以,还是按照FOR循环进行更新,速度还可以,已经找到自己语法错误,可以正常运行......
问题在于DataTable2!=DataTable1否则就可以,上面已经说过重新组织了DataTable2,也就是从原来的DataTable抽取需要编辑的列又添加了一个提示列,你这样拷贝的话我就不用重新组织DataTable2了,重新组织后DataTable2的列结构已经不和DataTable1等同了,上面方法还可以?
不知道是否理解了?我还是对你说的有疑惑.我喜欢玩编程,得益于微软发展到现在越来越好用的缘故.
DataTable dt = myDataSet.Tables[0];
foreach (DataRow row in dt.Rows)
{
string[] subitems = new string[Lies];
object[] Han = row.ItemArray;
subitems[0] = Han[6].ToString();
subitems[1] = Han[7].ToString();
subitems[2] = Han[1].ToString();
subitems[3] = Han[2].ToString(); }
DataTable dt = myDataSet.Tables[0];
foreach (DataRow row in dt.Rows)
{
string[] subitems = new string[Lies];
object[] Han = row.ItemArray;
subitems[0] = Han[6].ToString();
subitems[1] = Han[7].ToString();
subitems[2] = Han[1].ToString();
subitems[3] = Han[2].ToString();
}
我直接有点不明白你上面的,转来转去,
直接这样不好么?
for(i=0;i<myDataSet.Tables[0].Rows.Count();i++)
{
string str0=myDataSet.Tables[0].Rows[i][1];
string str1=myDataSet.Tables[0].Rows[i][7];
.......}