2013-06-12 42 views
0

我有以下情形運行指定的連接字符串不工作

SqlConnection sqlMdfCon = new SqlConnection(); 
sqlMdfCon.ConnectionString = "Data Source=" + txtDataSource.Text + ";Initial Catalog=" + txtDatabase.Text + ";Database=" + txtDatabase.Text + ";User ID=" + txtUserID.Text + ";Password=" + txtPassword.Text + ";Integrated Security=False"; 
if (sqlMdfCon.State == ConnectionState.Closed) 
{ 
    sqlMdfCon.Open(); 
} 
dTable = sqlMdfCon.GetSchema("Tables"); 
foreach (DataRow DRow in dTable.Rows) 
{ 

    if (DRow["TABLE_TYPE"].ToString() == "TABLE" || DRow["TABLE_TYPE"].ToString() == "VIEW" || DRow["TABLE_TYPE"].ToString() == "BASE TABLE") 
    { 
     intPos = DRow["TABLE_NAME"].ToString().LastIndexOf("FilterDatabase"); 
     lstTables.Items.Add(DRow["TABLE_NAME"]); // Getting error here 
    } 
} 

以下是例外

ConnectionString property is not initialized 

爲什麼我收到這個連我都正確分配的連接字符串來連接?

+1

是初始目錄必需的嗎?我不記得 – Jonesopolis

+1

你爲什麼要設置'Initial Catalog'和'Database'?它們是相同的。 –

+0

@DavidHoerster好吧我會刪除它,但它是獲得異常的原因? –

回答

0

試試這個:

SqlConnection sqlMdfCon = new SqlConnection(sqlMdfCon.ConnectionString = "Data Source=" +  txtDataSource.Text + ";Initial Catalog=" + txtDatabase.Text + ";Database=" + txtDatabase.Text + ";User ID=" + txtUserID.Text + ";Password=" + txtPassword.Text + ";Integrated Security=False";); 
sqlMdfCon.Open(); 
dTable = sqlMdfCon.GetSchema("Tables"); 

順便說一句,我想補充一個try/finally語句妥善處理連接對象。我希望你不會構建與連接字符串相同的查詢...

+0

請看編輯的問題。其實在其他地方出錯 –

+0

同樣的答案適用,你可以在構造函數中提供連接字符串。並跳過ConnectionState檢查,新創建的連接將始終關閉。按照建議從連接字符串中刪除數據庫關鍵字,並僅保留初始目錄。正確配置連接對象! – Oscar