VB.NET 查询不接受单引号

VB.NET single quotation not accepted by query

我有一个数据库class。我正在使用 SQLServerCe,它将 运行 所有命令。我将查询放入字符串变量 q。并传入Database函数class。我有个问题。接受所有值。但是当我将单引号放入文本框时。然后报错.....

这是我的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim q As String = "insert into student_classes (student_class) values ('" & TextBox1.Text & "')" 
    db.execute(q) 
    MsgBox("Record Added Successfully") 
    TextBox1.Clear() 
End Sub

您别无选择,只能转义输入或使用参数化 queries/commands。用户可以键入或粘贴到 TextBox1。此外,这是一个 SQL 注入攻击向量。心存恶意的人可以轻松地在该框中键入内容并对您的数据库造成严重破坏。

您的代码:

Dim q As String = "insert into student_classes (student_class) values ('" & TextBox1.Text & "')" 

假设我输入

Smith

入箱。

现在,q 的值为:

insert into student_classes (student_class) values ('Smith')

世间万事如意。

现在,假设我输入的不是 Smith:

Smith'); DROP TABLE student_classes; --

您的新查询是:

insert into student_classes (student_class) values ('Smith'); DROP TABLE student_classes; --')

您可能刚刚丢失了 student_classes table。不要相信用户输入。

我在所有可能包含 '

的字段分配上使用此函数
Function EscapeQuote(ByVal msData As Object) As String
    Return (Replace(msData, "'", "''"))
End Function

e.g.  values ('" & EscapeQuote(TextBox1.Text) & "')"