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不起作用,并且path看起来像bin\Debug\MediaPlayer.exeDatabase.mdf

我建议将连接字符串放入 app.config 中,而不是通过反射找到它。


更新

此问题的原因可能是运行 SQL Server 的帐户权限不足,如使用 OLE 使用 ClickOnce App 部署 SQL Express 数据库文件中所述。

尝试将您的数据库文件移动到与项目调试文件夹不同的位置。

于 2012-05-12T12:20:31.920 回答