0

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

1 に答える 1

0

パスがDatabase.mdfファイルの場所と一致していないと思います。

path変数の実際の値をデバッグして確認すると、それReplaceが機能せず、bin\Debug\MediaPlayer.exeDatabase.mdfpathのように見える場合があります。

リフレクション経由で接続文字列を見つけるのではなく、接続文字列を app.config に入れることをお勧めします。


アップデート

この問題の原因は、「OLE を使用した ClickOnce アプリによる SQL Express データベース ファイルの配置」で説明されているように、SQL Server を実行しているアカウントの権限が不十分である可能性があります。

データベース ファイルをプロジェクトのデバッグ フォルダーとは別の場所に移動してみてください。

于 2012-05-12T12:20:31.920 に答える