在我的.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()
但这不起作用,无论是否返回行,它都会显示消息框。如何检查是否返回了一行?
感谢。
答案 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