使用文本框从数据库中获取价值

时间:2016-01-18 06:53:00

标签: c# sql-server

 string que = "SELECT Name FROM StudentInfo where StudentNo=textBox1.Text ";

每次我运行它总是说

  

"多部分标识符" textBox1.Text"不能被约束"。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:6)

您需要使查询包含文本框中的值。 SQL Server对您的文本框没有任何了解 - 您只是提供了文本DemoBootstrapper,就好像它引用了SQL Server所知道的内容一样。但是,您不应该在 SQL本身中包含文本框中的值...

相反,您应该参数化SQL,并将文本框中的参数设置为在执行查询时一起发送的值:

textBox1.Text

这假设您的数据库中// Assuming an open connection... int studentNo = int.Parse(textBox1.Text); string sql = "SELECT Name FROM StudentInfo where StudentNo=@student_no"; using (var command = new SqlCommand(conn, sql)) { command.Parameters.Add("@student_no", SqlDbType.Int).Value = studentNo; // Execute the command as normal } 的类型当然是StudentNo - 相应地进行调整(以及您对Int的处理方式 - 我正在解析它作为textBox1.Text)。

您应始终参数化SQL而不是尝试在SQL本身中包含该值,原因有三个:

  • 它可以防范SQL Injection Attacks
  • 避免不必要的转化,让您更好地控制 所需的转化
  • 它通常可以更容易地读取SQL(因为没有涉及字符串连接代码等),因此您可以更简单地找到问题

答案 1 :(得分:2)

您应该参数化查询:

string que = "SELECT Name FROM StudentInfo WHERE StudentNo = @StudentNo"

using (SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["connection"].ConnectionString))
{
    using (SqlCommand command = new SqlCommand(sql, connection))
    {
        command.Parameters.Add("@StudentNo", SqlDbType.VarChar, 50).Value = textBox1.Text;

        //If StudentNo is Int
        //command.Parameters.Add("@StudentNo", SqlDbType.Int).Value = (int) textBox1.Text;

        connection.Open();

        string veri = Convert.ToString(command.ExecuteScalar());
        return veri;
    }
}

答案 2 :(得分:1)

使用此:

string strQuery = "SELECT Name FROM StudentInfo where StudentNo= @studentno";

SqlCommand cmd = new SqlCommand(strQuery);

cmd.Parameters.AddWithValue("@studentno", textBox1.Text.Trim());

答案 3 :(得分:-1)

我真的不明白你的问题,但查询应该是

string que = "SELECT Name FROM StudentInfo where StudentNo= '" + textBox1.Text + "';";

如果StudentNo是DB中的Varchar。或者

string que = "SELECT Name FROM StudentInfo where StudentNo=" + textBox1.Text + ";";

你应该去哪里参加像这样的参数化查询

using (SqlCommand command = new SqlCommand(
    "SELECT Name FROM StudentInfo where StudentNo=@No", connection))
    {
        command.Parameters.Add(new SqlParameter("No", textBox1.Text));
        SqlDataReader reader = command.ExecuteReader(); 
    }