如何使用变量数组创建 INSERT QUERY 字符串

How to make an INSERT QUERY String using an array of variables

我的代码是:

For index = 0 To dupColIndx - 1
    expression(index) = dgvINSRT.Rows.Item(i).Cells.Item(index).Value.ToString
Next

Dim strInsrt As String = "INSERT INTO " & _ 
                         dbTbl & _
                         colStr & _
                         Strings.Replace(expression(0), "'", "''", 1, -1, CompareMethod.Binary) & "','" & _
                         Strings.Replace(expression(1), "'", "''", 1, -1, CompareMethod.Binary) & "','" & _
                         Strings.Replace(expression(2), "'", "''", 1, -1, CompareMethod.Binary) & "')"

在上面的代码中,不是手动输入表达式 (0)、表达式 (1) 等。我希望在为表达式 (n) 输入 'n' 的值后自动连接字符串。

谢谢。

If expression.Count >= 1
    Dim strInsrt As String = "INSERT INTO " & dbTbl & colStr

    For i= 0 To expression.Count - 2
        strInsrt &= "'" & Strings.Replace(expression(i), "'", "''", 1, -1, CompareMethod.Binary) & "',"
    Next i

    strInsrt &= "'" & Strings.Replace(expression(expression.Count - 1), "'", "''", 1, -1, CompareMethod.Binary) & "')"
End If

您可以使用 String.Join:

For index = 0 To dupColIndx - 1
    expression(index) = dgvINSRT.Rows.Item(i).Cells.Item(index).Value.ToString.Replace("'", "''")
Next

Dim strInsrt As String = "INSERT INTO " & _ 
                     dbTbl & _
                     colStr & _
                     String.Join("','", expression) & "')"

注意:如果您自己对值进行转义,则对您正在使用的数据库使用正确的替换项至关重要,否则查询对 SQL 注入攻击是开放的。此处使用的方法适用于 SQL Server 和 Access,但可能不适用于其他数据库。它 适合 MySQL 例如,那么你还需要转义反斜杠。