2012-05-12 2 views
2

私はC#のを経由してデータベースに接続しようとしているが、私はそうするとき、私は非常に助けにならないエラーメッセージが出てい:データベースに接続しようとすると「エラー:OLEを初期化できません」というメッセージが表示されます。 C#

「8時44分17秒:エラー:OLE 8時44分を初期化できません:17:エラー:OLEを初期化できません "

私は解決策を探してみましたが、失敗しました。私もコンピュータを再起動しようとしましたが、どちらも助けにはなりませんでした。

私は、SQL Server 2008を実行していて、ここでは関係データベースのコードは次のとおりです。

/// <summary> 
    /// Connects to a given database and returns the database connection. 
    /// </summary> 
    /// <param name="file">The database file name.</param> 
    /// <returns>The database connection.</returns> 
    public static SqlConnection ConnectToDb(string file) 
    { 
     //initialize generic path 
     string path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
     path = path.Replace("bin\\Debug\\MediaPlayer.exe", ""); 
     path += "Database.mdf"; 

     string connectionPath = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + path + ";Integrated Security=True;User Instance=True"; 
     SqlConnection connection = new SqlConnection(connectionPath); 
     return connection; 
    } 

    /// <summary> 
    /// Executes a SQL query in a given database. 
    /// </summary> 
    /// <param name="file">The database file name.</param> 
    /// <param name="query">The SQL query to execute.</param> 
    public static void ExecuteQuery(string file, string query) 
    { 

     SqlConnection connection = ConnectToDb(file); 
     connection.Open(); 
     SqlCommand command = new SqlCommand(query, connection); 
     command.ExecuteNonQuery(); 
     connection.Close(); 
    } 

これは、私はいくつかのプロジェクトのために使用しているデータベース・コードであり、それは常に前に働いています。

ExecuteQueryメソッドのconnection.Open()行でエラーが呼び出されました(私が他の行をコメントアウトしたのでこれを知っています)。

何か助けていただけたら助かります。

EDIT:私はデータベースへの接続をテストしましたが、すべてチェックアウトされています。なぜコード経由で接続できないのか分かりません。

+0

1回目... SSMSを開き、sqlexpressに接続しようとします。 – maSTAShuFu

+0

SSMSを開くにはどうすればいいですか?申し訳ありません、私は経験がありません:P .. Visual Studioではプログラムやツールバーとして表示されません。 – Daniel

+0

SSMSはSQL Serverに付属するユーザーインターフェイスです。したがって、Microsoft SQL Management Studioを開き、サーバーに接続し、SQL Serverが一般的に機能するかどうかを確認します。 – YvesR

答えて

1

私は最終的にMain()メソッドの前に[STAThread()]を追加することでこれを解決しました。 :)

0

x64 CPU用のプロジェクトを構築していると思われます。 x64用のOLEドライバはありません。ビルドターゲットを任意のCPUからx86に変更することをお勧めします。

+0

私は誤解しているかもしれませんが、私はプロジェクトのプロパティを開き、 "ビルド"パネルを開き、プラットフォームの下で選択されたオプションは "アクティブ(x86)"です。 – Daniel

+0

あなたは32ビットシステムで作業しているようです。 – YvesR

+0

私は64ビットWindows 7を実行しています。 – Daniel

関連する問題