【发布时间】:2012-06-04 20:11:05
【问题描述】:
上下文
我的应用程序使用一个 SQL 数据库,它在我的应用程序启动时从该数据库中读取我的数据表。如果应用程序无法连接到 SQL DB,我有一个本地 Ms Access .MDB 文件。我有一个单独的线程来检查本地数据库是否已过时。
我有一个从我的 SQL 连接中获得的 DataTable --> 已验证并且可以正常工作 我可以在本地连接到我的 Access 数据库并从中读取 --> 已验证并正常工作
问题/问题
我正在尝试通过使用从 SQL 连接获得的 DataTable 来更新本地数据库。
public static void UpdateLocalDatabase(string strTableName, OleDbConnection MyConnection, DataTable MyTable)
{
try
{
if (CreateDatabaseConnection() != null)
{
string strQuery = "SELECT * FROM " + strTableName;
OleDbDataAdapter MyAdapter = new OleDbDataAdapter();
OleDbCommandBuilder MyCommandBuilder = new OleDbCommandBuilder(MyAdapter);
MyAdapter.SelectCommand = new OleDbCommand(strQuery, odcConnection);
MyAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand();
MyConn.Open();
MyAdapter.Update(MyTable);
MyConn.Close();
}
}
catch { }
}
如果我调试这个 sn-p,所有变量都是它们应该是的:
- strTableName = 我的表的正确名称
- MyConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyLocation;Persist Security Info=True;JET OLEDB:Database Password=MyPassword;"
- MyTable = 是我的应用程序进一步使用的正确表
这个过程运行没有错误,也没有使用catch,但它没有触及我的数据库,它只是没有做任何事情。
我是在这里丢球还是只是错过了明显的东西,我不知道,但我浏览了很多文章,除了展示 MyAdapter.Update() 之外,似乎没有更多内容。
欢迎任何帮助。
谢谢,
凯文
【问题讨论】:
-
@ZsoltBotykai 这确实是重复的——另一个问题显然具有误导性和混淆性,所以我去掉了这个问题,并确保在这里有一个更清晰的问题。
标签: c# sql winforms ms-access oledb