我想用语言备份我的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
答案 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的数据库。