私は現在、24時間年中無休で実行され、OPCサーバーから常に情報を収集するアプリケーションを作成中です。
ここで行う必要があるのは、この情報をデータベース(.accdb-file)に送信することです。これは非常に迅速に行う必要があります。サーバーからミリ秒ごとに新しい値をフェッチし、その値を同じ速度でデータベースに送信する必要があります。最後に、毎日00:00にデータベースを.zipファイルに圧縮しています。
私はマニアックなようにウェブを検索してきましたが、「最新の」チュートリアルが見つからないようです。これまでに見つけたものはすべて、プロバイダーとして「Microsoft.Jet.OLEDB.4.0」を使用していますが、Windows7PCには存在しません。
接続をテストするための小さなアプリケーションを作成しました。現在のコードを以下に添付して、これまでに試したことのヒントを示しますが、いずれも機能しないようです。
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ファイルであり、拡張子が大きく、開くことができません。またはMSAccessで使用されます。動作する.accdbファイルを作成するにはどうすればよいですか?