2015-02-10 83 views
1
SELECT verlog.bearerid, detail.snum 
FROM verlog 
INNER JOIN detail 
ON verlog.txnid = detail.txnid 
WHERE verlog.bearerid ='"+ TextBox1.Text +"' 

这是正确的方式来获取文本框的值并在where子句中使用它?文本框的值在哪里子句

+0

仍然无法工作似乎无法检索来自verlog的数据。 – JD1919 2015-02-10 17:33:55

+0

请显示完整的代码...它不清楚上下文 - 如果这是C#它不会编译,如果这是一个存储过程,它会给出一个错误。这是什么? – Hogan 2015-02-10 18:17:15

+0

还记得考虑SQL注入攻击。那里正好可以让人们做一些讨厌的东西。 – 2015-02-10 19:48:36

回答

1

通过以这种方式构建语句,您可以打开自己高达SQL injection的攻击,其中用户可能能够针对您的数据库运行额外的sql。

您可以通过使用参数化的sql来防止这种情况发生。然后在执行时传递查询和参数。

SELECT verlog.bearerid, detail.snum 
FROM verlog 
INNER JOIN detail 
ON verlog.txnid = detail.txnid 
WHERE verlog.bearerid = @bearerid 

进一步的细节可以在这里阅读:http://www.csharp-station.com/Tutorial/AdoDotNet/lesson06

或者您可以使用一个ORM将处理这个给你。

+0

这是什么工作!谢谢约翰 – JD1919 2015-02-11 03:15:27

+0

很高兴帮助。请按下勾号而不是更新问题来标记为正确答案。这将有助于未来有同样问题的其他人。 – John 2015-02-11 07:28:25

1

我细分,不要像你提到的那样编写脚本;这将为注入铺平道路。如果不使用任何ORM技术(例如实体框架又反过来要求自己的安全问题),则始终坚持参数化ado.net查询。看看this link