如何检查数据库中是否存在值

时间:2013-09-15 12:20:51

标签: vb.net

我希望VB中的代码检查数据库中的值是否存在。

这是我的代码

conn.open()
Dim select As New OleDbCommand

select.Connection = conn

select.CommandText = " SELECT COUNT(*) FROM your_table WHERE field = textbox.value"
if count>0
MsgBox("already exists")

conn.close()

但它不起作用。

3 个答案:

答案 0 :(得分:1)

您的查询错误,您不会以这种方式将文本框值放在查询中 您应该始终使用参数化查询

Dim commandText = "SELECT count(*) from your_table where field = ?"
Using(conn = new OleDbConnection(.....)
Using(select = New OleDbCommand(commandText, conn)
    conn.open()
    select.Parameters.Add("@p1", textbox.value)
    Dim count = Convert.ToInt32(select.ExecuteScalar())
    if count > 0 Then
        MsgBox(" already exsist ")
    End If
End Using
End Using

在此处设置命令文本中的参数占位符(?),并将参数添加到命令及其值。之后,您需要执行该命令。在您的情况下,您只需要一个值作为从命令返回的值,因此ExecuteScalar是正确的使用方法。

另请注意,连接和命令是一次性对象,因此在您不再需要时应关闭并处理。为此,正确的方法是Using Statement

答案 1 :(得分:0)

您的查询不正确

"SELECT COUNT(*) FROM your_table WHERE field = textbox.value"

将其更改为

"SELECT COUNT(*) FROM your_table WHERE field = '" & textbox.text & "'"

1)Winforms TextBox控件剂量没有Value属性。它有文本属性(我假设您正在使用文本框控件)

2)您需要发送Textbox.Text中包含的值而不是“TextBox.Value”。因此,您在新查询

中添加了两个字符串

3)然后&你的if语句中缺少endif

4)这不是@steve和其他人提到的使用查询的正确方法。

答案 2 :(得分:0)

这很好用。

Public Sub insrt()
    con.Open()

    Dim cmd1 As New OleDbCommand("select count(*) from tbcat where catname=?", con)
    cmd1.Parameters.Add("@cat", OleDbType.VarChar).Value = txtcourse.Text
    Dim count = Convert.ToInt32(cmd1.ExecuteScalar)
    If count > 0 Then
        MsgBox("Already Exist")
        'Exit Sub
    Else
        Dim cmd As New OleDbCommand("insert into tbCat(Catcode,catname,protype)values('" & txtcode.Text & "','" & txtcourse.Text & "','" & txttype.Text & "')", con)
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        'con.Close()
        display_course()

        txtcode.Text = String.Empty
        txtcourse.Text = String.Empty
    End If
    cmd1.Dispose()
    con.Close()
End Sub