单引号查询问题

时间:2015-09-14 11:55:30

标签: sql-server vb.net

我在sql查询中面临单引号输入的问题。查询如下。

Dim query As String = "insert into users(comment) values ('" & txt_comment.Text & "')"

工作正常。但是,当用户在文本框中输入单个代码数据时,查询会崩溃。输入示例如"亨利"。有人想建议我该怎么办?提前致谢

2 个答案:

答案 0 :(得分:6)

<强> USE PARAMETERISED QUERIES!!

很抱歉大声喊叫,但我不能强调这是多么重要。您提供的"Henry's"示例实际上是一个驯服的示例,只会导致查询失败。有人可以输入"Henry'; DROP TABLE users;--",现在您丢失了用户表。

即使您有限制输入(例如下拉列表),您仍应使用参数化查询,因为它们允许更强大的输入,并且还允许从缓存中使用查询计划。

多年来我没有使用VB.NET,所以请原谅任何语法错误,但我认为你想要这样的东西:

Dim query As String = "insert into users(comment) values (@Comment);"

Using connection As New SqlConnection("Your Connection String")
    Using command As New SqlCommand(query, connection)

        command.Parameters.Add("@Comment", SqlDbType.VarChar, 255).Value = txt_comment.Text
        command.ExecuteNonQuery()
    End Using
End Using

答案 1 :(得分:-4)

您需要复制引号:

Dim query As String = "insert into users(comment) values ('" & txt_comment.Text.replace("'","''") & "')"