我目前正在制作一个 24/7 运行并不断从 OPC 服务器收集信息的应用程序。
我现在需要做的是将此信息发送到数据库(.accdb-file)。这需要非常非常迅速地发生。我每毫秒从服务器获取一个新值,我需要以相同的速度将该值发送到数据库。最后,我在每天 00:00 将数据库压缩为 .zip 文件。
我一直像疯子一样在网上搜索,但似乎找不到“最新”教程。到目前为止,我发现的每一个都使用“ Microsoft.Jet.OLEDB.4.0 ”作为提供程序,但它在我的 Windows 7 PC 上不存在。
我已经制作了一个小应用程序来测试连接,我将在下面附上我当前的代码,以提示您到目前为止我已经尝试过什么,但这似乎都不起作用。
private void button1_Click(object sender, EventArgs e)
{
System.Reflection.Assembly oAssembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream oStream = oAssembly.GetManifestResourceStream("RSLogixDB.accdb");
System.IO.FileStream fileStream = new System.IO.FileStream("C:\\Users\\sezettersth\\Documents\\RSLogixDB.accdb", System.IO.FileMode.Create);
byte[] abyt = new byte[oStream.Length];
oStream.Read(abyt, 0, (int)oStream.Length);
fileStream.Write(abyt, 0, (int)oStream.Length);
fileStream.Close();
if (fileStream != null)
{
fileStream.Close();
fileStream = null;
}
if (oStream != null)
{
oStream = null;
}
}
这是我尝试的第一种方法,这里我使用了一个用于创建和写入文件的自制类。不幸的是,它不适用于 .accdb 文件。(第一行的评论包括我尝试过的提供者。
private void button1_Click(object sender, EventArgs e)
{
//sFileDia.ShowDialog();
//Provider=Microsoft.ACE.OLEDB.12.0
//Povider=.NET Framework Data Provider for OLE DB
//Povider=Microsoft.Jet.OLEDB.4.0
//Driver={Microsoft Access Driver (*.mdb, *.accdb)};
//Data Source=C:\\Users\\sezettersth\\Documents\\RSLogixDB.accdb;
//Persist Security Info=False;
//Provider=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\sezettersth\\Documents\\RSLogixDB.accdb;Persist Security Info=False
string RSLogixDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\sezettersth\\Documents\\RSLogixDB.accdb;Persist Security Info=False";
string RSLogixDBPath = "C:\\Users\\sezettersth\\Documents\\RSLogixDB.accdb";
OleDbConnection connection = new OleDbConnection(RSLogixDB);
string connectionStr = connection.ConnectionString;
//OleDbDataReader dataReader = new OleDbDataReader(RSLogixDB);
ImportExport textwriter = new ImportExport();
textwriter.setExportPath(RSLogixDBPath);
textwriter.endExport();
}
必须有一个简单的解决方案,如果没有“ Microsoft.Jet.OLEDB.4.0 ”提供程序,我不能成为唯一使用 Access 的人。
(我还没有开始压缩文件的代码,如果你知道如何做,我很高兴听到它,但这里的主要焦点是数据库问题。)
更新:问题可能并不像我最初那样出在提供商身上,Microsoft.ACE.OLEDB.12.0 允许我创建一个 .accdb 文件,但它基本上只是一个带有花哨扩展名的空 txt 文件,并且无法打开或与 MS Access 一起使用。如何制作有效的 .accdb 文件?