为什么OLEDBCommand取不到数据?

gqyz01sw 2010-08-23 10:01:22
我用VB.Net制作了一个搜索程序,但是有个问题,就是用程序去查询Access数据库总是查不到数据,但是断掉程序,然后把OLEDBCommand里面的CommandText属性中的SQL语句复制到Microsoft Access中的查询窗口里面执行就能查询到数据,这是怎么回事?数据库太大会造成这种现象吗?
这是有关代码:

If SearchIndex Then '如果选择了从数据库中搜索
Dim cmdtext As String = "" '定义SQL语句变量
If FSizeValue = FileSizeCode.Unlimited Then ‘如果选择“不限文件大小”
Dim args() As String = {fname, CreatonTime, ModifiedTime, extName} ’参数
If Not SearchFullPath Then ‘如果没选择“从文件路径中搜索”
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_filename like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_extension like ""{3}*""", args) ’生成sql
Else
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_path like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_extension like ""{3}*""", args)
End If
Else
Dim fsize1 As Long, fsize2 As Long = -1
Select Case FSizeValue
Case FileSizeCode.Big
fsize1 = 1 * 1024 * 1024 : fsize2 = 16 * 1024 * 1024
Case FileSizeCode.Medium
fsize1 = 128 * 1024 : fsize2 = 1048576
Case FileSizeCode.Small
fsize1 = 64 * 1024 : fsize2 = 128 * 1024
Case FileSizeCode.Super
fsize1 = 16 * 1024 * 1024 : fsize2 = 128 * 1024 * 1024
Case FileSizeCode.Tiny
fsize1 = 0 : fsize2 = 64 * 1024
Case FileSizeCode.Empty
fsize1 = 0
Case FileSizeCode.Huge
fsize1 = 128 * 1024 * 1024
End Select
If fsize2 <> -1 Then
Dim args() As String = {fname, CreatonTime, ModifiedTime, fsize1, fsize2, extName}
If SearchFullPath Then
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_path like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_size > {3} AND index_size <= {4} AND index_extension like ""{5}*""", args)
Else
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_filename like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_size > {3} AND index_size <= {4} AND index_extension like ""{5}*""", args)
End If
Else
If fsize1 = 0 Then
Dim args() As String = {fname, CreatonTime, ModifiedTime, fsize1, extName}
If SearchFullPath Then
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_path like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_size = {3} AND index_extension like ""{4}*""", args)
Else
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_filename like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_size = {3} AND index_extension like ""{4}*""", args)
End If
Else
Dim args() As String = {fname, CreatonTime, ModifiedTime, fsize1, fsize2, extName}
If SearchFullPath Then
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_path like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_size > {3} AND index_size <= {4} AND index_extension like ""{5}*""", args)
Else
cmdtext = String.Format("SELECT * FROM [searchindex] WHERE index_filename like ""*{0}*"" AND index_ctime < #{1}# AND index_mtime < #{2}# AND index_size > {3} AND index_size <= {4} AND index_extension like ""{5}*""", args)
End If
End If
End If
End If
Dim cmd As New OleDbCommand(cmdtext, c.PConn)
Dim dr As OleDbDataReader = cmd.ExecuteReader '这里读不到数据,但是数据库里确实有
While dr.Read
Dim lst As New ListViewItem
lst.Text = dr("index_filename")
lst.SubItems.Add(dr("index_path"))
lst.SubItems.Add(dr("index_ctime"))
lst.SubItems.Add(dr("index_mtime"))
lst.SubItems.Add(dr("index_size"))
lst.SubItems.Add(dr("index_extension"))
list.Add(lst)
End While
dr.Close()
cmd.Dispose()
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqyz01sw 2010-08-24
  • 打赏
  • 举报
回复
发现了一个问题:当我在OLEDBCommand里面用like语句的时候怎么样也读不到结果,但是不加条件或者用等号的时候却可以读到数据。这是怎么回事?难道OLEDBCommand不支持like?
myhope88 2010-08-24
  • 打赏
  • 举报
回复
估计是连接没打开吧,你可以将cmdtext改为一段简单的sql语句,测试下看有没有数据
gqyz01sw 2010-08-24
  • 打赏
  • 举报
回复
自己解决了。原来在OLEDBCommand里面like语句不能用星号,要用百分比号
kuhura 2010-08-24
  • 打赏
  • 举报
回复
把like后面的引号换成 '试试。
wuyq11 2010-08-23
  • 打赏
  • 举报
回复
加try catch
跟踪cmdtext 语句
gqyz01sw 2010-08-23
  • 打赏
  • 举报
回复
如果那些有问题的话就该报错了,但是没有
古今多少事 2010-08-23
  • 打赏
  • 举报
回复
PConn没打开?也不对,没打开也该提示啊

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧