SELECT verlog.bearerid, detail.snum
FROM verlog
INNER JOIN detail
ON verlog.txnid = detail.txnid
WHERE verlog.bearerid ='"+ TextBox1.Text +"'
这是正确的方式来获取文本框的值并在where子句中使用它?文本框的值在哪里子句
SELECT verlog.bearerid, detail.snum
FROM verlog
INNER JOIN detail
ON verlog.txnid = detail.txnid
WHERE verlog.bearerid ='"+ TextBox1.Text +"'
这是正确的方式来获取文本框的值并在where子句中使用它?文本框的值在哪里子句
通过以这种方式构建语句,您可以打开自己高达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将处理这个给你。
我细分,不要像你提到的那样编写脚本;这将为注入铺平道路。如果不使用任何ORM技术(例如实体框架又反过来要求自己的安全问题),则始终坚持参数化ado.net查询。看看this link
仍然无法工作似乎无法检索来自verlog的数据。 – JD1919 2015-02-10 17:33:55
请显示完整的代码...它不清楚上下文 - 如果这是C#它不会编译,如果这是一个存储过程,它会给出一个错误。这是什么? – Hogan 2015-02-10 18:17:15
还记得考虑SQL注入攻击。那里正好可以让人们做一些讨厌的东西。 – 2015-02-10 19:48:36