将数据从一个数据库传递到另一个数据库表

时间:2009-10-07 09:20:10

标签: c# ms-access

我想用语言备份我的Access数据库。 在备份中获取所有数据后,我想从源数据库中删除数据。 (这样在查询和过滤应用程序时不会花费太多时间。)

源数据库名称是Data.mdb 目标数据库名称为Backup.mdb 两者都受相同的密码保护。

出于这些目的,我正在用C#编写一个查询。

string conString = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=Backup.mdb;Jet    
                   OLEDB:Database Password=12345";
OleDbConnection dbconn = new OleDbConnection();
OleDbDataAdapter dAdapter = new OleDbDataAdapter();
OleDbCommand dbcommand = new OleDbCommand();

try
{
   if (dbconn.State == ConnectionState.Closed)
      dbconn.Open();

 string selQuery = "INSERT INTO [Bill_Master] SELECT * FROM [MS Access;DATABASE="+     
                   "\\Data.mdb" + "; Jet OLEDB:Database Password=12345;].[Bill_Master]";

 dbcommand.CommandText = selQuery;
 dbcommand.CommandType = CommandType.Text;
 dbcommand.Connection = dbconn;
 int result = dbcommand.ExecuteNonQuery();
 }
 catch(Exception ex)   {}

如果我尝试没有密码数据库文件,一切都会好起来的。 我认为在查询语句中传递密码时出错。 我试图通过访问查询执行,但它说“无效的参数”。 请问有没有其他编程逻辑。 感谢

PRASHANT YuvaDeveloper

4 个答案:

答案 0 :(得分:3)

Data.mdb和Backup.mdb的结构是否相同?因此,我不打扰通过SQL复制数据,只是复制整个文件。

答案 1 :(得分:2)

尝试删除;Jet之间的空格... 所以格式为:

INSERT INTO [Bill_Master] SELECT * FROM [MS Access;DATABASE="+     
               "\\Data.mdb" + ";Jet OLEDB:Database Password=12345;].[Bill_Master]

答案 2 :(得分:1)

您可以复制和重命名Data.mdb,然后截断Data.mdb中的所有表。比尝试一次复制一个表容易得多..

答案 3 :(得分:1)

不要删除数据。在将来进行分析或查询时,这变得很困难。如果需要很长时间,那么请查看索引或升级到SQL Server。 Express版本是免费的,可以处理高达4 Gb的数据库。