2016-06-21 8 views
0

私のプロジェクトでは、.mdbのあるフォルダから.csvファイルにいくつかの属性を抽出しています。すべての関数が正しく処理されていますが、ConnectionStringに問題があります。OleDbConnection ConnectionString複数のファイルを開くときに問題が発生する

初めて実行すると、フォルダ内の最初のファイルの接続が開き、.csvファイルが抽出され、接続が閉じられます。これまでのすべての良い。

その後、フォルダ内の2番目のファイルに移動すると、何らかの方法で最初のファイルのConnectionStringが再び開きますが、関数は2番目の.mdbファイルを呼び出します。どのようにして2番目のファイルを開くことができますか?

static void Main() 
{ 
    CreateFolder(); 

    string dst_fld = @"C:\csv\AllCsvFiles"; 
    string src_fld = @"C:\mdb"; 
    string dst_ext = ".mdb"; 

    string[] mdb_array = Directory.GetFiles(src_fld, "*" + dst_ext, SearchOption.TopDirectoryOnly); // Get all mdb files from a folder 

    OleDbConnection cn = new OleDbConnection(); 

    foreach (string tname in mdb_array) 
    { 
     cn.ConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",mdb_array); 

     try 
     { 
      cn.Open(); // open the connection 
      ExportFunction(cn, tname, dst_fld); // call function for export the csv file 
     } 
     finally 
     { 
      cn.Close(); 
     } 
    } 

    GetCSVFiles(); 
    DeleteFF(); 
} 
+0

'cn.Open()は、'二度目の実行時にエラーメッセージは何ですか? –

+0

フォルダには、論文のファイルが含まれています。 27001DX.mdb 27002DX.mdb エラーメッセージ: Microsoft Jetデータベースエンジンは、入力テーブルまたはクエリ「27002DX」を見つけることができません。それが存在し、その名前が正しく綴られていることを確認してください。 – athanikos

+0

ブレークポイントを使用して、二度目の実行、\t \t cn.ConnectionString \t "プロバイダ= Microsoft.Jet.OLEDB.4.0;データソース= C:\\ MDB \\ 27001DX.mdb" TNAME \t「C:\ \ mdb \\ 27002DX.mdb "\t文字列 – athanikos

答えて

1

の@ steve16351で指摘したように、あなたは次のように接続文字列を変更する必要があります。

cn.ConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", tname); 
関連する問題