none
用ExecuteReader返回受影响的行数,但返回数总是0,怎么回事 RRS feed

  • 问题

  • 大家好,我想查询表中有多少条记录,用ExecuteReader,但返回数总是0,大家帮我看看,谢谢
     Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Picture.mdb;Persist Security Info=True;Jet OLEDB:Database Password=lt;"
    
            Dim dbConnection As OleDbConnection = New OleDbConnection(dbConnectionString)
    
            dbConnection.Open()
    
            Dim dbcommand As OleDbCommand
    
            Dim str As String
    
            str = "select count(*) from picInfo"
    
            dbcommand = New OleDbCommand(str, dbConnection)
    
            MsgBox(dbcommand.ExecuteNonQuery)
    
    

    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年9月18日 2:04

答案

  •         Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Picture.mdb;Persist Security Info=True;Jet OLEDB:Database Password=lt;"
            Dim dbConnection As New OleDbConnection(dbConnectionString)
            dbConnection.Open()
            Dim dbcommand As OleDbCommand = Nothing
            Dim str As String = "select count(*) from picInfo"
            dbcommand = New OleDbCommand(str, dbConnection)
            Dim count As Integer = CInt(dbcommand.ExecuteScalar())

    知识改变命运,奋斗成就人生!
    • 已标记为答案 litianlt 2009年9月18日 3:35
    • 取消答案标记 litianlt 2009年9月18日 3:38
    • 已建议为答案 mldark 2009年9月18日 3:40
    • 已标记为答案 肖小勇Moderator 2009年9月19日 1:08
    2009年9月18日 2:46
    版主

全部回复

  • 你好,一行一列的值使用 ExecuteScalar 获取
    知识改变命运,奋斗成就人生!
    2009年9月18日 2:11
    版主
  • 谢谢,那怎样直接获取表中的行数呢 ?
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年9月18日 2:23
  •         Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Picture.mdb;Persist Security Info=True;Jet OLEDB:Database Password=lt;"
            Dim dbConnection As New OleDbConnection(dbConnectionString)
            dbConnection.Open()
            Dim dbcommand As OleDbCommand = Nothing
            Dim str As String = "select count(*) from picInfo"
            dbcommand = New OleDbCommand(str, dbConnection)
            Dim count As Integer = CInt(dbcommand.ExecuteScalar())

    知识改变命运,奋斗成就人生!
    • 已标记为答案 litianlt 2009年9月18日 3:35
    • 取消答案标记 litianlt 2009年9月18日 3:38
    • 已建议为答案 mldark 2009年9月18日 3:40
    • 已标记为答案 肖小勇Moderator 2009年9月19日 1:08
    2009年9月18日 2:46
    版主
  • 谢谢,ExecuteScalar的定义是执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行,为什么能得到行数呢?
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年9月18日 2:56
  • 你不是用了Count这个聚合函数吗?那么得到就是行数啊.
    2009年9月18日 2:59
  • 结果集中第一行的第一列就等于 count(*)的值
    【孟子E章】
    2009年9月18日 3:13
    版主
  • 哦,知道了,谢谢
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年9月18日 3:35
  • 你好 获取首行首列的值 采用ExecuteScalar方法
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月18日 5:26
    版主