如何在文本框中显示SQL查询结果?

时间:2015-04-17 08:53:14

标签: c# sql asp.net

我有以下代码:

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();
    }
}

我想在文本框中显示总标记值,但它不起作用。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

你的SQL查询是错误的。尝试如下:

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

始终尝试遵循这种标准做法,你永远不会失败。

答案 2 :(得分:-1)

尝试在SQL查询中围绕GUID变量放置单引号。

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