system.data.sqlclientexception:“@p2”附近的语法不正确

system.data.sqlclientexception:incorrect syntax near '@p2'

我正在尝试在 VB.net windows 应用程序中插入、更新网格上的数据,该应用程序必须更新数据库中的数据。我无法使用新模式名称(客户)实现此功能,但是当我尝试使用模式“dbo”创建 table 时,我能够插入、更新网格上的数据并能够在 [= 中查看数据31=] 服务器也是。

请帮助我在代码执行插入和更新选项时需要更改什么。

代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim test1 As String
    test1 = "Select * from Customer.CustomerID"

    connection = New OleDbConnection
    connection.ConnectionString = "Provider=MSOLEDBSQL.1;Integrated Security=SSPI;Initial Catalog=prod;Data Source=IN-TESTVM;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=IN-TESTVM;Use Encryption for Data=False;Tag with column collation when possible=False;MARS Connection=False;DataTypeCompatibility=0;Trust Server Certificate=False;Application Intent=READWRITE;MultisubnetFailover=False;Use FMTONLY=False;"
    connection.Open()
    myDA = New OleDbDataAdapter(test1, connection)
    dsDataGrid = New DataSet
    myDA.Fill(dsDataGrid)
    grid.DataSource = dsDataGrid.Tables(0)
    bindsrc2.DataSource = dsDataGrid
    connection.Close()

End Sub

按钮点击事件代码如下

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    app = New OleDbCommandBuilder(myDA)
    bindsrc2.EndEdit()

    myDA.Update(bindsrc2.DataSource)  'Hitting the error while updating the data at this line
End Sub

我也可以使用除 dbo 以外的模式名称将数据加载到网格中。

myDA.Fill(dsDataGrid)
grid.DataSource = dsDataGrid.Tables(0)
bindsrc2.DataSource = dsDataGrid

点击保存按钮后的错误消息

尝试将命令生成器的 QuotePrefixQuoteSuffix 分别设置为 "[""]"。当您在查询中使用通配符时,命令生成器不会自动转义列名,这意味着关键字或空格或其他特殊字符会导致语法错误。

请注意,有两种选择。一种是根本不使用命令生成器并创建自己的操作命令。在这种情况下,您编写 SQL 以便转义需要它的列名。另一种是在查询中不使用通配符,在这种情况下,您将对需要它的列名进行转义,命令生成器也会效仿。