DataAdapter.update,数据库没有
我有两处使用了DataAdapter.update,其中一处更新成功,另一处无任何反应(数据库文件的时间戳没有变化。)第一处的场景是:
先从数据库文件中select *读取数据到this.dataGridView1.DataSource中,然后在this.dataGridView1.DataSource修改数据。之后执行一下代码,数据库记录是可以更新的
private void button4_Click(object sender, EventArgs e)
{
DataTable dt = this.dataGridView1.DataSource as DataTable;
UpdateTable(dt);
foreach (DataRow myRow in dt.Rows)
{
foreach (DataColumn myColumn in dt.Columns)
{
Console.Write(myRow[myColumn] + "|" + myRow[myColumn].GetType() + "|");
}
Console.WriteLine();
}
Console.WriteLine();
}
第二处用法的场景,我是通过读取csv文本文件形成了一个dataTable,然后update数据库,数据库文件无任何变化。
--------------------编程问答-------------------- //修改数据表记录
csvImportClass csvImport = new csvImportClass();
//导入tbl_cumgm_fmt_cfg.csv
string filePath = @"C:\\testone.csv";
string fileName = Path.GetFileName(filePath);
string csvFolder = Path.GetDirectoryName(filePath);
string csvSql = "select * from " + filePath;
csvImport.CsvReader(csvSql, csvFolder, fileName);//这里得出的csvImport.CsvData.Tables[fileName]数据都是正常的
UpdateTable(csvImport.CsvData.Tables[fileName]);
public bool UpdateTable(DataTable srcTable, string tableName)
{
bool isok = false;
try
{
foreach (DataRow myRow in srcTable.Rows)
{
foreach (DataColumn myColumn in srcTable.Columns)
{
Console.Write(myRow[myColumn] + "|" + myRow[myColumn].GetType() + "|");
}
Console.WriteLine();
}
command.CommandText = "SELECT * FROM " + tableName;
SQLiteDataAdapter oda = new SQLiteDataAdapter(command);
SQLiteCommandBuilder ocb = new SQLiteCommandBuilder(oda);
oda.SelectCommand = command;
oda.InsertCommand = ocb.GetInsertCommand();
oda.DeleteCommand = ocb.GetDeleteCommand();
oda.UpdateCommand = ocb.GetUpdateCommand();
oda.Update(srcTable);
isok = true;
}
catch (Exception ex)
{}
return isok;
} --------------------编程问答-------------------- 数据库表testone是有主键的 --------------------编程问答-------------------- 两种方式调用的都是同一个封装的updateTable函数,这是传入的datatable不同。
为什么一个更新成功了,一个无任何反应? --------------------编程问答-------------------- 我也碰到了这个问题,请大牛指导
补充:.NET技术 , C#