在C#中如何使用引号从文本框中获取值

时间:2013-08-28 12:19:59

标签: c# sql-server-2008

在我的程序中,我需要从数据库中获取价值,因此使用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'

所以我的问题是如何引用????

6 个答案:

答案 0 :(得分:6)

像这样使用a parameterized query

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);

附注,请查看SQL Injection Attacks by Example

答案 5 :(得分:0)

您需要使用使用参数的预准备语句。

否则,您需要在输入字符串周围添加引号,但它会让您打开SQL注入