3

C# 経由でデータベースに接続しようとしていますが、接続すると非常に役に立たないエラー メッセージが表示されます。

「08:44:17: エラー: OLE を初期化できません 08: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() 行で呼び出されます (他の行をコメントアウトしたので、これはわかっています)。

どんな助け/アドバイスも大歓迎です:)。

編集: データベースへの接続をテストし、すべてをチェックアウトしましたが、コード経由で接続できない理由がわかりません。

4

2 に答える 2

2

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

于 2012-05-21T14:14:12.637 に答える
0

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

于 2012-05-12T06:19:25.243 に答える