1
 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**

(即NurseryButton.Text=Nursery),但我想要的结果是从tblStudentInfo 中选择StudentName,其中class=' Nursery'。这怎么做???这看起来很简单,但我无法弄清楚......

4

3 回答 3

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

但是你绝对不应该那样使用它!(SQL注入

这是一个很好的答案:Sql inline query with parameters。执行查询时不读取参数

于 2013-03-12T15:10:19.190 回答
0

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

result = "somestring" + someVariable;

现在你想用someVariable单引号括起来,这样做是这样的:

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

或更短:

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

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

于 2013-03-12T15:12:59.330 回答
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 会保护您免受此类事情的影响,还是您需要自己做

您应该以某种方式考虑参数化查询或存储过程,以确保您对数据库的输入是安全的。

于 2013-03-12T15:13:13.533 回答