【发布时间】:2016-10-01 21:44:50
【问题描述】:
我需要一种将所有数据从 SQL Server CE 传输到 Access mdb 数据库的解决方案。
我尝试了这种方法http://www.codeproject.com/Answers/483989/HowplustoplusExportplusSQLplusTablesplusToplusAcce#answer2(解决方案#2),但收到错误“在连接字符串或 IN 子句中未指定数据库。”
如果我连接到非紧凑型 SQL 服务器,代码就可以工作。
我猜问题出在 IN 子句中的连接字符串,但我不知道如何更改它。
这是我的代码:
private void ExportTable(string tableName, string source, string destination)
{
var connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", destination);
var cmdText = string.Format("SELECT * INTO {0} FROM [{0}] IN ''[Data Source={1};Max Database Size='4000';Persist Security Info=False;];", tableName, source);
using (var conn = new OleDbConnection(connStr))
{
conn.Open();
using (var cmd = new OleDbCommand(cmdText, conn))
{
cmd.ExecuteNonQuery(); // error on this line
}
conn.Close();
}
}
连接字符串:Data Source={1};Max Database Size='4000';Persist Security Info=False;当我直接连接到数据库时工作正常。
更新:显然IN子句中源数据库的格式应该如下:
[类型;数据库 = 路径]
当我使用时
var cmdText = string.Format("SELECT * INTO {0} FROM [{0}] IN ''[SqlServer CE; DATABASE={1}];", tableName, source);
我收到不同的错误:找不到可安装的 ISAM。
您知道 SQLServer CE 的正确类型吗?完全支持吗?我找不到任何有关它的信息。
我也尝试过:SQL CE、SQLSERVER.CE、Microsoft.SQLSERVER.CE.OLEDB.3.5、Microsoft.SQLSERVER.MOBILE.OLEDB.3.0 等 - 同样的错误...
【问题讨论】:
-
你能显示字符串“source”中的内容吗?
-
@Tom Stude: 源和目标分别保存 sdf 和 mdb 文件的路径。
-
也许这里是描述类型 - connectionstrings.com/… ?
标签: c# database ms-access export sql-server-ce