2012-05-12 52 views
0

我試圖連接到通過C#的數據庫,但我發現了一個非常無益的錯誤消息,當我這樣做:當我嘗試連接到數據庫時,出現「錯誤:無法初始化OLE」? C#

08:44:17: Error: Cannot initialize OLE 08:44:17: Error: Cannot initialize 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()行上調用錯誤(我知道這是因爲我註釋了其他行)。

任何幫助/建議將不勝感激:)。

+0

如果您在64位操作系統上運行,請確保您將'x86'作爲您的平臺。 – LarsTech

+0

在項目的Properties頁面的Build面板下,我選擇Active(x86)作爲平臺,如果這就是你的意思:)。 – Daniel

+0

有人嗎? :(浪費了一整天在這個bug,沒有成功.. – Daniel

回答

0

我猜你的路徑與您的Database.mdf文件的位置不匹配。

嘗試調試,看看你的path變量的實際值,你可能會發現Replace沒有工作,你path看起來像成才斌\調試\ MediaPlayer.exeDatabase.mdf

我建議將連接字符串放入app.config中,而不是通過Reflection找到它。


更新

這可能是對這一問題的原因是你的SQL服務器作爲Deploying SQL Express database files with ClickOnce App using OLE描述下運行的帳戶權限不足。

嘗試將數據庫文件移動到與項目調試文件夾不同的位置。

+0

這不是問題,路徑是好的,我發佈之前三重檢查。感謝app.config的想法,它聽起來比反射更優雅:)。 – Daniel

+0

@Daniel我做了一些更深入的挖掘,發現了一些與SQL Server OLE和UAC有關的東西,因爲您之前在其他項目中聲明瞭它的工作方式,這似乎是合理的。 – Filburt

+0

好的,Database.mdf文件位於與調試文件夾不同的文件夾中,但是當我運行該程序(Ctrl + F5)時,數據庫將在調試文件夾內重新創建,即使我先前已將其刪除。我已經嘗試將我的整個項目目錄移動到不同的文件夾(文檔)中,希望它可以工作,但它沒有幫助。 – Daniel

相關問題