テキストファイルを読み取り、読み取ったデータをアクセス97 DBに書き込み、次にdbを読み取ってファイルに書き込むC#アプリケーションを構築しています。OLEDB 接続文字列に問題があるようです。以下は私のコードです。この例外が発生する理由は誰にもわかりますか?
データベースは存在し、クエリを実行する前にのみ接続を開き、再度閉じます。
string fileName = "JobLogReport.mdb";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fileName + ";";
OleDbConnection cnn = new OleDbConnection(connectionString);
string[] fileNames = openFileDialog1.FileNames;
int lineSkips = 2;
int fileCount = 1;
for (int i = 0; i < fileNames.Length; i++)
{
if (i == 0) { tbProgress.Text += "Reading Job Log File Number:" + fileCount + "\r\n"; }
if (i == 1) { tbProgress.Text += "Reading Job Log File Number:" + (fileCount + 1) + "\r\n"; }
tbProgress.Text += "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r\n";
tbProgress.Text += "Populating Database \r\n";
tbProgress.Text += "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r\n";
fileReader = new StreamReader(fileNames[i].ToString());
while (!fileReader.EndOfStream)
{
String file = fileReader.ReadLine();
if (file.StartsWith("IC.PXPSG"))
{
OleDbCommand command = new OleDbCommand();
char[] delimiters = new char[] { ' ' };
string[] line = file.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
command.CommandText = "INSERT INTO DocsReceived (Filename, Documents) VALUES (?,?)";
command.Parameters.AddWithValue("@filename", line[0]);
command.Parameters.AddWithValue("@documents", Int32.Parse(line[1], NumberStyles.Any, CultureInfo.InvariantCulture));
command.Connection = cnn;
cnn.Open();
command.ExecuteNonQuery();
cnn.Close();
接続オブジェクトを見ると、2 つのことがわかります。
サーバーのバージョンは次のように述べています:「cnn.ServerVersion」がタイプ「System.InvalidOperationException」の例外をスローしました
また、 cnn.Open() と cnn.OpenAsync() はどちらも接続の状態を変更しません。