当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,