我想避免从 vb.net 到 Access 数据库的重复插入数据
Posted
技术标签:
【中文标题】我想避免从 vb.net 到 Access 数据库的重复插入数据【英文标题】:I want to Avoid duplicated Insert data from vb.net to Access Database 【发布时间】:2021-09-22 11:06:14 【问题描述】:我想避免重复什么正确的语法来做这个?
Dim StrInsert As String = "Insert Into Job (Name) Select @OtherInfo30
WHERE @OtherInfo30 not in (select name from job)"
但是从哪里查询错了
【问题讨论】:
where not exists (select 1 from job where name=@otherinfo30)
Dim StrInsert As String = "插入作业(名称)在不存在的地方选择 @OtherInfo30(从名称 =@otherinfo30 的作业中选择 1)" 将 cmd 作为新的 OleDbCommand(StrInsert, CON) cmd。 Parameters.AddWithValue("Name", row.Cells("otherinfo30").Value) 给我语法错误
查询表达式“@OtherInfo30 其中@OtherInfo30 不存在(从名称=@otherinfo30 的作业中选择1)”中的错误消息语法错误(缺少运算符)。
您将参数定义为不同的名称
我得到同样的错误你知道哪里而不是退出的另一种语法
【参考方案1】:
我不相信 Access SQL 支持插入时的 where 子句,更糟糕的是它肯定不支持子查询。
现在在“很多”情况下,如果行确实存在,那么我们经常想要更新该行,我可以发布代码。
但是,在这种情况下呢?我们测试该行是否存在,如果不存在,则运行插入命令。
是的,这确实意味着两个 SQL 语句,但我们确实 GET 以重用参数! (所以这不是太多的代码,也不是“太”糟糕。
所以这个:
Dim strAddHotel As String = "Zoo5"
Using cmdSQL As New OleDbCommand("SELECT ID FROM tblHotels WHERE HotelName = @Hotel",
New OleDbConnection(My.Settings.TESTAce))
cmdSQL.Parameters.Add("@Hotel", OleDbType.VarWChar).Value = strAddHotel
cmdSQL.Connection.Open()
If cmdSQL.ExecuteScalar = 0 Then
cmdSQL.CommandText = "INSERT into tblHotels (HotelName) VALUES(@Hotel)"
cmdSQL.ExecuteNonQuery()
End If
End Using
【讨论】:
以上是关于我想避免从 vb.net 到 Access 数据库的重复插入数据的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录
VB6/Microsoft Access/DAO 到 VB.NET/SQL Server... 有建议吗?
vb.net2010从ACCESS的OLE字段读出图片显示到PictureBox控件上
将 VB.NET 代码从 Visual Studio Express 复制到 Microsoft Access 2013