2016-09-15 71 views
0

我需要在asp C#中根據數據庫中的值0或1填充複選框。根據數據庫查詢檢查複選框

SqlCommand Comm1 = new SqlCommand("Select Active from dbo.SQLInfrastructure WHERE [Instance] LIKE '" + label1.Text + "%'", connn); 
connn.Open(); 
SqlDataReader DR1 = Comm1.ExecuteReader(); 


if (Comm1==1) 
{ 
    this.activeCheckBox.Checked = false; 
} 
else 
{ 
    this.activeCheckBox.Checked = true; 
} 

connn.Close(); 

我相信我很近,這是在page_load事件。此代碼不起作用,但傳達了我正在努力完成的任務。

+0

SQL注入攻擊多大? – STLDeveloper

+0

查詢是否總是隻返回1條記錄? – Berkay

+0

如果您正在使用dataReader,您需要在while循環中循環while while(DR1.Read()){}'在主題 – MethodMan

回答

0

看一看這個SqlDataReader example

本質,纔可以使用你的讀者的內容移動它的第一條記錄

而且(進一步STLDeveloper的評論)...考慮使用parameterised queries而不是直接值

+0

我絕對會使用參數化查詢。我想簡化它,所以我可以讓代碼工作。感謝您對 – PoopaSaurasRex

0
SqlCommand Comm1 = new SqlCommand("Select Active from dbo.SQLInfrastructure WHERE [Instance] LIKE '" + label1.Text + "%'", connn); 
connn.Open(); 
SqlDataReader DR1 = Comm1.ExecuteReader(); 

this.activeCheckBox.Checked = DR1.Read() && DR.GetBoolean(0); 

connn.Close(); 

同樣的,

這是非常錯誤的,你已經在這裏做了什麼,

if (Comm1==1){} 

以來,該SqlCommand對象Comm1不能有一個整數它通過在註釋中LarsTech作爲所述值。

+0

的評論如何「ExecuteNonQuery()返回受INSERT,UPDATE或DELETE語句影響的行數」。當他「選擇」時有用嗎? –

+0

@ScottPerham編輯... –

+0

酷...除了_still_並沒有真正幫助...如果返回的值爲'Active'是假? –

0

DataAdapter可能是一個其他的解決辦法,

SqlDataAdapter adp = new SqlDataAdapter("command",connection); 
DataTable dt = new DataTable(); 
adp.Fill(dt); 

if((int)dt.AsEnumerable().First()["Active"] == 1) { 
    this.activeCheckBox.Checked = false; 
} 
else{ 
    this.activeCheckBox.Checked = true; 
} 

希望幫助,

+0

當我使用這個例子時,我得到一個訪問衝突。感謝您的輸入 – PoopaSaurasRex

+0

我認爲「活動」在sql有一個整數數據類型?如果出現不匹配,則違反訪問規則是正常的。 @PoopaSaurasRex – Berkay

+0

謝謝!它的工作原理。問題是在數據庫級別,我將其更改爲int。 – PoopaSaurasRex

0

SqlCommand類的ExecuteScalar()方法請看:

this.activeCheckBox.Checked = (bool)Comm1.ExecuteScalar; 

此外,作爲STLDeveloper表示,你真的應該使用SqlParameters來傳遞用戶輸入到你的SQL語句中。

相關問題