我的应用程序是一个依赖数据库的 winform 应用程序。在应用程序启动时,它连接到服务器上的 SQL 数据库,并将此信息放在 DataSet/DataTable 中。
如果由于某种原因无法访问服务器上的数据库,则应用程序具有内置的故障转移功能,它将从本地数据库中获取其信息。
如果在正常情况下,我启动将从 sql 数据库中读取的工具,并且如果它已在服务器上更新(一个单独的片段检查这一点),它应该确保本地数据库是最新的,这就是问题开始了..(见下文)
这部分工作正常并作为上下文添加 - 这是我们连接到 SQL 数据库的地方
public static DataSet dtsTableContents;
public static DataTable CreateDatabaseSQLConnection()
{
try
{
string strSqlConnectionString = "Data Source=MyLocation;Initial Catalog=MyCatalog;User=MyUser;Password=MyPassword;";
SqlCommand scoCommand = new SqlCommand();
scoCommand.Connection = new SqlConnection(strSqlConnectionString);
scoCommand.Connection.Open();
string strQueryToTable = "SELECT * FROM " + strTableName;
dtsTableContents = new DataSet();
SqlCommand scmTableInformation = new SqlCommand(strQueryToTable, scnConnectionToDatabase);
SqlDataAdapter sdaTableInformation = new SqlDataAdapter(scmTableInformation);
scnConnectionToDatabase.Open();
sdaTableInformation.Fill(dtsTableContents, strTableName);
DataTable dttTableInformation = dtsTableContents.Tables[strTableName];
scnConnectionToDatabase.Close();
return dttTableInformation;
}
catch
{
return null;
}
}
这个片段是从我的本地数据库读取的故障转移方法的一部分......
这部分工作正常并作为上下文添加 - 这是我们连接到 MDB 数据库的地方
public static DataTable CreateDatabaseConnection()
{
try
{
string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyLocation;Persist Security Info=True;JET OLEDB:Database Password=MyPassword;"
odcConnection = new OleDbConnection(ConnectionString);
odcConnection.Open();
string strQueryToTable = "SELECT * FROM " + strTableName;
DataSet dtsTableContents = new DataSet();
OleDbCommand ocmTableInformation = new OleDbCommand(strQueryToTable, ocnConnectionToDatabase);
OleDbDataAdapter odaTableInformation = new OleDbDataAdapter(ocmTableInformation);
ocnConnectionToDatabase.Open();
odaTableInformation.Fill(dtsTableContents, strTableName);
DataTable dttTableInformation = dtsTableContents.Tables[strTableName];
ocnConnectionToDatabase.Close();
return dttTableInformation;
}
catch
{
return null;
}
}
从我的 CreateDatabaseSQLConnection() 我有一个数据集。验证此 DataSet 包含来自服务器数据库的所有信息。现在我一直在谷歌搜索,发现自己试图使用这段代码来更新基于这篇文章的本地数据库:http: //msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update( v=vs.71).aspx
public static void UpdateLocalDatabase(string strTableName)
{
try
{
if (CreateDatabaseConnection() != null)
{
string strQueryToTable = "SELECT * FROM " + strTableName;
OleDbDataAdapter odaTableInformation = new OleDbDataAdapter();
odaTableInformation.SelectCommand = new OleDbCommand(strQueryToTable, odcConnection);
OleDbCommandBuilder ocbCommand = new OleDbCommandBuilder(odaTableInformation);
odcConnection.Open();
odaTableInformation.Update(dtsTableContents, strTableName);
odcConnection.Close();
}
}
catch { }
}
这个片段运行没有错误,但它似乎没有改变任何东西。运行此步骤所需的时间也需要几毫秒,我认为这需要更长的时间。
我正在使用从我的 SQL 连接获得的数据集,我试图将这个数据集写入我的本地数据库。
可能是因为这是一个来自 SQL 连接的 DataSet 并且我无法通过我的 OleDbAdapter 将它写入我的 mdb 连接,还是我只是在这里错过了显而易见的事情?
任何帮助表示赞赏。
谢谢,
凯文