2017-06-26 13 views
0

C#でdbfファイルを作成しようとしています。何とか私はOLEDBへの接続を開こうとしているとき、プログラムは例外をスローせずに終了します。OLEDBへの接続を開くとコードが終了します

private void CreateDBFFile() 
    { 
     try 
     { 
      using (var dBaseConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; " + @" Data Source=k:\Temp; " + @"Extended Properties=dBase IV")) 
      { 
       dBaseConnection.Open(); 

       string createTableSyntax = 
        "Create Table Person " + 
        "(Name char(50), City char(50), Phone char(20), Zip decimal(5))"; 
       var cmd = new OleDbCommand(createTableSyntax, dBaseConnection); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
     catch (Exception ex) 
     { 
      string x = ex.Message; 

     } 

    } 

がエラーを右ここにスローされます:

dBaseConnection.Open(); 

私はイベントログをチェックし、それがいずれかの助けにはならない以下のコードです。以下はイベントログからのエラーログです: '

Faulting application name: iisexpress.exe, version: 10.0.14358.1000, time 
stamp: 0x574fc56b 
Faulting module name: clr.dll, version: 4.6.1649.1, time stamp: 0x58f97fe6 
Exception code: 0xc0000005 
Fault offset: 0x0045068d 
Faulting process id: 0x3354 
Faulting application start time: 0x01d2eeacd40d1e91 
Faulting application path: C:\Program Files (x86)\IIS Express\iisexpress.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Report Id: 18960866-5aa0-11e7-b3f6-005056c00008 

ご協力いただけると助かります。

+0

より良いエラー情報を得るために例外を取得し、それをMessageプロパティ(文字列 'x'の内容)で見てください。あなたはすでに文字列を取得しています...実際に何が言われているかを見ると便利です。 –

+0

コードが例外をスローしている場合、私は例外を取得するでしょう。コードは単に例外をスローすることなく終了します:dbconnection.open() – Anjali

答えて

0

あなたの接続方法は理想的ではありません。

これを実行してコードをステップ実行すると、例外が発生するか、正常に動作するはずです。 接続文字列をweb.config内に配置します。

<connectionStrings> 
    <add name="Connection" connectionString="Data Source=k:\Temp; xtended Properties=dBase IV Provider=Microsoft.Jet.OLEDB.4.0" />  
    </connectionStrings> 


string connection = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString; 
      using (OleDbConnection dBaseConnection = new OleDbConnection(connection)) 
      { 
       if (dBaseConnection.State == ConnectionState.Closed) 
       { 
        dBaseConnection.Open(); 
       } 
      } 
+0

web.configファイルに接続文字列を入れています。私のコード全体を表示するために、私は接続ステートメントをusingステートメントに入れます。また、web.configファイルに接続文字列を入れてもコードは変更されません。コード自体ではなく、設定ファイルから接続文字列を読み込むだけです。私は接続を開こうとしているときにコードを終了しています。 – Anjali

+0

はい、私はそれが変わらないことを理解します。そのクリーナーだけど、なぜコード全体を表示するのかは分かります。あなたがうまく働いてうれしい。 – Aman

1

とすぐに私は私の接続文字列からこの行を削除して

 "Extended Properties=dBase IV ". 

コードが仕事を始めました。

関連する問題