在我的程序中,我需要从数据库中获取价值,因此使用texbox使客户端键入任何内容,我可以从数据库中搜索。
我的代码是
SqlCommand sqlcmd = sqlcon.CreateCommand();
sqlcmd.CommandText = "Select distinct transactionName from dbo.tbl where terminalId = " + textBox_cardNumber.Text;
以上不是我的完整代码,但在我的代码中我使用的是textbox_cardNumber ...
我想用引号''
它应该像
Select distinct transactionName from dbo.tbl where terminalId = '0097'
所以我的问题是如何引用????
答案 0 :(得分:6)
SqlCommand sqlcmd = sqlcon.CreateCommand();
sqlcmd.CommandText = "Select distinct transactionName from dbo.tbl " +
"where terminalId = @id";
sqlCmd.Parameters.AddWithValue("@id", textBox_cardNumber.Text);
....
通过这种方式,您可以将作业延迟识别为将数据(文本框文本)识别为知道如何正确引用您的值的Framework代码的字符串。您还删除了Sql Injection攻击的可能性
答案 1 :(得分:4)
"'" + textBox_cardNumber.Text + "'";
我希望我理解你!
答案 2 :(得分:1)
你也可以尝试这个,但这不是一个好习惯,总是使用参数。
sqlcmd.CommandText = "Select distinct transactionName from dbo.tbl where terminalId = '" + textBox_cardNumber.Text +"'";
答案 3 :(得分:1)
您可以尝试以下代码:
SqlCommand sqlcmd = sqlcon.CreateCommand();
sqlcmd.CommandText = "Select distinct transactionName from dbo.tbl where terminalId = '"
+ textBox_cardNumber.Text+"'";
答案 4 :(得分:0)
而不是字符串连接,可以 使用 parameterized sql 。因为此类代码对 SQL Injection 攻击开放。
SqlCommand sqlcmd = sqlcon.CreateCommand();
sqlcmd.CommandText = "SELECT DISTINCT transactionName FROM dbo.tbl
WHERE terminalId = @terminalID";
sqlcmd.Parameters.AddWithValue("@terminalID", textBox_cardNumber.Text);
答案 5 :(得分:0)
您需要使用使用参数的预准备语句。
否则,您需要在输入字符串周围添加引号,但它会让您打开SQL注入