大家好,我正在使用 VB.Net 开发一个 Windows 窗体应用程序。我的应用程序的 1 部分会将 csv 文件中的数据累积到本地数据库中。我编写了一个函数,可以在进行进一步处理之前检查本地数据库中是否存在特定条目。这是功能:
Private Function CheckTableGotEntries(ByVal tableName As String, ByVal year As String, ByVal week As String) As Boolean
Dim stringInsert As String
Dim result As Boolean = False
Dim myReader As SqlCeDataReader
stringInsert = "SELECT CASE WHEN EXISTS (" & _
"SELECT *" & _
"FROM " & tableName & _
" WHERE year_column = " & "'" & year & "'" & " AND week_column = " & "'" & week & "'" & _
")" & _
"THEN CAST(1 AS BIT)" & _
"ELSE CAST(0 AS BIT) END"
SQLCon.Open()
SQLCmd = New SqlCeCommand(stringInsert, SQLCon)
myReader = SQLCmd.ExecuteReader()
result = myReader.Read() 'SUPPOSE TO GET FALSE HERE
SQLCon.Close()
Return result
End Function
在使用调试器运行时,我发现这个函数在它应该返回“FALSE”的地方返回“TRUE”。在初始运行本身中,当数据库表仍然为空并且正在处理 csv 的第一行时,我的函数说该条目已经存在并返回 true。
我怀疑我的查询有问题。任何人都可以提出一些建议吗?