2012-10-18 49 views
0

雖然語法正確,但我遇到了InvalidOperationExeption,但我有這種錯誤。 Screenshot SampleInvalidOperationException未處理不允許更改'ConnectionString'屬性。在C上#

On my dbs.cs class

在我konek功能上類DBS

public String konek() 
{ 
      connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + ""; 
      return connectionString; 
} 
+0

最好粘貼你的代碼,它是你的問題內容而不是圖像的異常信息。 – Habibillah

回答

1

你必須創建新OleDbConnection對象,而不是重用現有之一。

OleDbConnection = new OleDbConnection(db.konek()); 

此外,它是不是一個好的做法,以保持連接打開很長一段時間。 因此,只要操作完成就關閉連接。

我相信你的情況,如果你已經使用相同的ConnectionString創建了OleDbConnection對象,那麼不需要重新分配相同的連接字符串。

0

您不允許修改連接字符串屬性。嘗試模板波紋管:

using (OleDbConnection connection = new OleDbConnection(db.konek())) 
{ 
    try 
    { 
     connection.Open(); 
     .... 
     .... 
    } 
    catch (Exception ex) 
    { 
     .... 
    } 
} 
0

也許這可能是因爲con對象已經Open使其成爲只讀。解決此問題的一種方法是爲您的Connection對象創建另一個實例。

using (OleDbConnection con = new OleDbConnection()) 
{ 
    con.ConnectionString = db.konek(); 
} 

使範圍儘可能小。

0

正如例外所述,您的「con」已經打開連接。

您可能希望重新使用現有的連接或者只能更換,如果連接未打開:

if(con.State!=ConnectionState.Open) 
{ 
con.ConnectionString = db.Konek(); 
} 

但修改連接字符串,而它已經具備了價值,是開放的,表明有一些你的代碼邏輯存在缺陷。