如何在asp内部的sql helper的sql语句中使用单个撇号显示列名的值。净

时间:2013-03-12 15:07:52

标签: asp.net sql sqlhelper

 SQLHelper sqhlpr = new SQLHelper();
    sqhlpr.SqlText = "Select StudentName from tblStudentInfo where class=" + NurseryButton.Text;
    DataTable dt = sqhlpr.getDataTable(false);

这是我的代码。现在sqhlpr.sqlText的结果是

select StudentName from tblStudentInfo where class= **Nursery**

(ieNurseryButton.Text = Nursery)但我想要的结果是从tblStudentInfo中选择StudentName,其中class =' Nursery'。如何才能完成?这看起来很简单,但我不能只想出来......

3 个答案:

答案 0 :(得分:2)

"Select StudentName from tblStudentInfo where class='" + NurseryButton.Text + "'";

但你绝对不应该这样使用它! (SQL Injection

这是一个很好的答案:Sql inline query with parameters. Parameter is not read when the query is executed

答案 1 :(得分:0)

您的查询是一个字符串。你这样做:

result = "somestring" + someVariable;

现在你想把someVariable括在sinlge引号中,就像这样:

result = "somestring" + "'" + someVariable + "'";

或更短:

result = "somestring'" + someVariable + "'";

但值得注意的是,手动构建查询是“未完成”。您应该查看参数化查询等工具,甚至是实体框架等O / R映射器。

答案 2 :(得分:0)

以下代码将执行您想要的操作:

SQLHelper sqhlpr = new SQLHelper();
sqhlpr.SqlText = "Select StudentName from tblStudentInfo where class = '" + NurseryButton.Text + "'";
DataTable dt = sqhlpr.getDataTable(false);

你需要考虑另外两件事:

  1. 如果有人将撇号放在NurseryButton.Text中,会发生什么?
  2. SQLHelper会保护您免受此类事件的侵害,或者您是否需要自己动手
  3. 您应该以某种方式考虑参数化查询或存储过程,以确保您对数据库的输入安全地完成。