【问题标题】:system.data.sqlclientexception:incorrect syntax near '@p2'system.data.sqlclient 异常:'@p2' 附近的语法不正确
【发布时间】:2023-03-25 04:31:01
【问题描述】:

我正在尝试在 VB.net windows 应用程序中插入、更新网格上的数据,该应用程序必须更新数据库中的数据。我无法使用新架构名称(客户)来实现此功能,但是当我尝试使用架构“dbo”创建表时,我能够插入、更新网格上的数据并能够在 SQL Server 中查看数据。

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

代码:

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

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

【问题讨论】:

  • 除非您要连接到所有需要 OLE DB 的各种数据源,否则您真的应该使用 SqlClient 连接到 SQL Server。它连接到较低级别的 SQL Server,因此效率更高。

标签: sql-server vb.net oledb oledbdataadapter


【解决方案1】:

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

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

【讨论】:

  • 感谢@jimcihinney 提供的信息。我使用了“[”代码并在代码中进行了一些更改,问题得到了解决
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2015-12-12
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
相关资源
最近更新 更多