Vb.net 如何使用变量数组生成插入查询字符串

Vb.net 如何使用变量数组生成插入查询字符串,vb.net,string,insert-into,Vb.net,String,Insert Into,我的代码是: 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 &

我的代码是:

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
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,那么您还需要转义反斜杠。

如何使用插入查询字符串?你真的在向数据库发送命令吗?如果是这样的话,我强烈建议使用参数化的(通过
SqlCommand
OracleCommand
等)来避免SQL注入问题(或捕获坏数据)。通过数组循环将每个项作为参数添加到要发送到数据库的命令对象将非常容易。如果是这种情况,需要知道您使用的是什么类型的命令对象,以编写适当的代码示例。末尾有一个额外的逗号和双引号(即,“”),这使得INSERT语句无法使用。请帮我更正:
插入['Part Commodity Class$']([Dispatch Commodity]、[Dispatch Commodity Temp]、[Dispatch Commodity 2])值('Dispatch Commodity2'、'Dispatch Commodity2'、'')
更新了我的答案,您可能需要修改一点
colStr
值,因为我不知道其中包含什么。返回的字符串如下:
插入['Part Commodity Class$']([Dispatch Commodity]、[Dispatch Commodity Temp]、[Dispatch Commodity 2])值('Dispatch Commodity 3'、'Dispatch Commodity ytem3'、'Dispatch Commodity 3'、'')
一切正常,但我无法插入到数据表中,因为末尾有“”。请帮助删除此项。@程序员:这意味着数组
表达式
有一项过多。它应该使用
ReDim表达式(dupColIndx-1)
创建。你真厉害!。。。它以字符串形式使用
Dim表达式(dupColIndx-1)
…非常感谢:)