在下面的代码中,它是OLEDB
连接中使用的“删除”按钮。
我的数据库表名是tblinformation
。
顺便说一句,错误显示:
Data type mismatch in criteria expression. `-Microsoft JET DATABASE ENGINE`, and it was in a form of msgbox..
Imports System.Data.OleDb
Imports System.String
Public Class frmbookinfo
Dim cnn As New OleDb.OleDbConnection
Dim Str As String
If CheckId() = False Then
MsgBox("Id : Integer Value Required!!!")
Exit Sub
End If
Try
Str = "delete from tblinformation where bcode="
Str += txtbookcode.Text.Trim
Con.Open()
Cmd = New OleDbCommand(Str, Con)
Cmd.ExecuteNonQuery()
Dst.clear()
Dad = New OleDbDataAdapter("SELECT * FROM tblinformation ORDER BY bcode", Con)
Dad.Fill(Dst, "tblinformation")
MsgBox("Record deleted successfully...")
If CurrentRow > 0 Then
CurrentRow -= 1
ShowData(CurrentRow)
End If
Con.Close()
Catch ex As Exception
MessageBox.Show("Could Not delete Record!!!")
MsgBox(ex.Message & " - " & ex.Source)
Con.Close()
End Try
答案 0 :(得分:1)
数据库中的字段bcode
可能是文本类型
您使用字符串连接来构建命令文本,如果您未能正确处理您的值,这将无法帮助。
而是使用参数化查询并让任务正确地将您的参数解析为数据库框架代码
Str = "delete from tblinformation where bcode=?"
Con.Open()
Cmd = New OleDbCommand(Str, Con)
Cmd.Parameters.AddWithValue("@p1", txtbookcode.Text.Trim)
Cmd.ExecuteNonQuery()
现在,您的sql命令包含一个参数占位符(?),并在参数集合中指定了正确的参数值。框架代码正确处理此参数
编辑如果您的bcode
字段是文本字段,则无法以这种方式构建命令。您应该在单引号之间封装您的值。这样的事情。
IT WORKS BUT IT IS WRONG - VERY WRONG -
Str = "delete from tblinformation where bcode='" & txtbookcode.Text.Trim & "'"
Syntax Error
所以,我真的建议你使用第一个例子中说明的参数化查询方法