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
点击保存按钮后的错误消息
尝试将命令生成器的 QuotePrefix
和 QuoteSuffix
分别设置为 "["
和 "]"
。当您在查询中使用通配符时,命令生成器不会自动转义列名,这意味着关键字或空格或其他特殊字符会导致语法错误。
请注意,有两种选择。一种是根本不使用命令生成器并创建自己的操作命令。在这种情况下,您编写 SQL 以便转义需要它的列名。另一种是在查询中不使用通配符,在这种情况下,您将对需要它的列名进行转义,命令生成器也会效仿。
我正在尝试在 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
点击保存按钮后的错误消息
尝试将命令生成器的 QuotePrefix
和 QuoteSuffix
分别设置为 "["
和 "]"
。当您在查询中使用通配符时,命令生成器不会自动转义列名,这意味着关键字或空格或其他特殊字符会导致语法错误。
请注意,有两种选择。一种是根本不使用命令生成器并创建自己的操作命令。在这种情况下,您编写 SQL 以便转义需要它的列名。另一种是在查询中不使用通配符,在这种情况下,您将对需要它的列名进行转义,命令生成器也会效仿。