C#如何把DataTable更新到Access数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何把DataTable更新到Access数据库相关的知识,希望对你有一定的参考价值。

一次整张表

public static void UpdateAccess(DataTable temp)

    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=Data.MDB;Persist Security Info=False;Jet OLEDB:Database Password=");
    try
    
        con.Open();
        OleDbDataAdapter Bada = new OleDbDataAdapter("SELECT *  FROM TotalData where 1 =2", con);//建立一个DataAdapter对象
        OleDbCommandBuilder cb = new OleDbCommandBuilder(Bada);//这里的CommandBuilder对象一定不要忘了,一般就是写在DataAdapter定义的后面
        cb.QuotePrefix = "[";
        cb.QuoteSuffix = "]";
        DataSet ds = new DataSet();//建立DataSet对象
        Bada.Fill(ds, "demo");//填充DataSet
        foreach (DataRow tempRow in temp.Rows)
        
            DataRow dr = ds.Tables["demo"].NewRow();
            dr.ItemArray = tempRow.ItemArray;//行复制
            ds.Tables["demo"].Rows.Add(dr);
        
        Bada.Update(ds, "demo");//用DataAdapter的Update()方法进行数据库的更新
    
    catch (Exception ex)
    
        Console.WriteLine(ex.ToString());
    
    finally
    
        con.Close();
    

参考技术A 通过DataAdapter对象操作DataSet实现更新数据库。//Update();
如果你对ADO.NET不太熟悉,可以网上查一查;

参考资料:ADO.NET

本回答被提问者采纳
参考技术B 调用OleDbDataAdapter的Update()方法。 参考技术C 想省事,还不给个分。

ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库

access数据库里面有一张表跟datatable的表结构一模一样了,请问怎么用代码将datatable导入access呢
我要的是一次性将表数据导入access,不是一行一行的插入

insert into A select id,name From B
A表 表示access数据库里面有一张表

B表 表示是数据查询出来追问

B表可以是datatable?

追答

上面的SQL语句A表和B表的数据必须要一个数据库中,所以根据你的描述你的数据在两个不同的数据库中,所以只能先使用事务+for循环拼接SQL语句,然后一次执行拼接完成的SQL语句了。

追问

怎么写这个事务呢,怎么拼接语句呢..可以给个例子么

追答StringBuilder Buidler = new StringBuilder();
Buidler.Append("begin tran" + Environment.NewLine);
Buidler.Append(Environment.NewLine);
foreach (DataRow dr in dt.Rows)

     Buidler.Append("INSERT INTO A(id,name) VALUES('" + dr[0] + "','" + dr[1].ToString() + "');");
 
 Buidler.Append(Environment.NewLine);
 Buidler.Append("commit tran");

然后,把Buidler.ToString(),当成一个SQL语句执行一下,就可以了。

追问

IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。】  为什么报这个错误呢

追答

打断点根进看一下,到底什么地方报错啊。

参考技术A 插入不就行了, Insert Into table values ('值1','值2') 会不? 参考技术B Insert into [表B] Select * from [表A] Where " 插入条件"

我上面的语句就是一次性向表B插入表A中所有的记录,不是一条一条加。如果是无条件的,就把where......删除就行了。

以上是关于C#如何把DataTable更新到Access数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 命令从我的 DataTable 对象中使用 foreach-loop 更新 C# 中的 MS Access 数据库?

C#如何将datatable中的数据批量更新到MYSQL数据库

ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库

由于使用自动增量添加到表中,如何使用更新的数据刷新 C# DataTable?

C#,winfom,数据库为access.如何把sql查询结果直接保存在数组中?不是通过循环一个值一个值的赋予。

C#中如何将DataTable保存到数据库?