从MS Access数据库检查结果(VB.NET)

时间:2009-11-24 09:31:22

标签: vb.net

在我的.NET应用程序中,我必须管理房间预订。我使用INSERT INTO语句通过SQL查询进入房间预订到MS Access数据库。

在我插入预订之前,我需要检查该时间段是否已经存在预订,以及是否确实阻止用户在当时预订。

我已编写代码来检索他们想要预订的预订日期和时间的数据库结果,并且Access将返回数据的事实意味着用户正试图通过其他人预订。

但我仍然坚持如何检查我是否有一个resuklt返回。我的代码:

    cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Database\database.mdb;")
    cn.Open()
    cmd = New OleDbCommand("SELECT * FROM(" & roomvar.ToLower() & ") WHERE (((" & roomvar.ToLower() & ".date)=" & Chr(34) & dtpDate.Value.Date & Chr(34) & "))", cn)
    dr = cmd.ExecuteReader
    If dr.HasRows = True Then
        MsgBox("There is an existing booking")
    End If
    dr.Close()

但这不起作用,无论是否返回行,它都会显示消息框。如何检查是否返回了一行?

感谢。

1 个答案:

答案 0 :(得分:0)

cmd = New OleDbCommand("SELECT Count(*) FROM(" & roomvar.ToLower() & ") WHERE (((" & roomvar.ToLower() & ".date)=" & Chr(34) & dtpDate.Value.Date & Chr(34) & "))", cn)
dim alreadyBooked as Integer = cmd.ExecuteScalar

If alreadyBooked > 0 Then
   Msgbox "There is an existing booking"
End If

编辑:vb.net不是我使用的语言。您可能需要在cmd.ExecuteScalar上申请强制转换 另外,我建议使用Using声明。

link:http://www.pluralsight.com/community/blogs/fritz/archive/2005/04/28/7834.aspx