2015-04-17 56 views
1

我有以下代碼:如何在文本框中顯示SQL查詢結果?

dbConnection cn = new dbConnection(); 
SqlCommand cmd = new SqlCommand(); 
protected void dropdown_student_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string StudentGUID = dropdown_student.SelectedValue; 
    cn.con.Open(); 
    cn.cmd.Connection = cn.con; 
    cn.cmd.CommandText = "select SUM(Marks) AS 'Total' from Marksheet where StudentGUID = " + StudentGUID + " "; 
    dr = cn.cmd.ExecuteReader(); 
    if (dr.HasRows) 
    {    
     while (dr.Read()) 
     { 
      textbox_total.Text = dr["Total"].ToString(); 
     } 
     cn.con.Close(); 
    } 
} 

我要顯示在文本框中佔總分的價值,但它不工作。任何人都可以將我指向正確的方向嗎?

+0

你得到任何錯誤或輸出得到dr [「Total」]? –

+0

你在「textbox_total.Text」中獲得什麼價值? –

+0

@ Aravind Sivam錯誤就是這樣的----'DB73801'附近語法不正確。並且該行是---- dr = cn.cmd.ExecuteReader(); –

回答

1

嘗試這樣:

// define your query upfront - using a PARAMETER! 
string query = "SELECT SUM(Marks) FROM dbo.Marksheet WHERE StudentGUID = @StudentID;"; 

// put the SqlConnection and SqlCommand into using blocks  
using (dbConnection cn = new dbConnection()) 
using (SqlCommand cmd = new SqlCommand(query, cn)) 
{ 
    // define the parameter value 
    cmd.Parameters.Add("@StudentID", SqlDbType.UniqueIdentifier).Value = dropdown_student.SelectedValue; 

    cn.Open(); 

    // use ExecuteScalar if you fetch one row, one column exactly 
    object result = cmd.ExecuteScalar(); 
    cn.Close(); 

    if(result != null) 
    { 
     int value = (int)result; 
     textbox_total.Text = value.ToString(); 
    } 
} 
+0

@SimpleMan:單引號是什麼?哪裏?當在一個SQL查詢中使用**參數**(因爲你**總是**應該),不需要單引號.... –

+1

然後你的評論是在錯誤的地方! :-) –

-1

嘗試把單引號周圍的GUID變量SQL查詢。

cn.cmd.CommandText = "select SUM(Marks) AS 'Total' from Marksheet where StudentGUID = '" + StudentGUID + " '"; 
0

您的SQL查詢有誤。試試如下:

string query = string.Format("SELECT SUM(Marks) FROM dbo.Marksheet WHERE StudentGUID = '{0}';", StudentID); 

總是試圖遵循這種標準的做法,你永遠不會失敗。

+0

標準做法是使用'參數化'查詢,檢查@ marc_s回答 –

+0

你是對的。但我只是在談論字符串連接。 –