获取行计数仅返回值1

时间:2011-04-12 19:28:32

标签: asp.net sql vb.net count

我在4.0的.net Framework上使用Sql Server 2005和Vb Studios 2010。我试图从数据库中获取确切的行数并填充数据表,然后使用标签显示行数。

Dim comm2 = db.selectcommand(db.conn, "*", "Tablename", " columnname = '" & Session(sessionvariable) & "' AND columnname = 'Unread '")
    Dim sqlda2 As New SqlDataAdapter(comm2)
    Dim dt2 As New DataTable
    sqlda2.Fill(dt2)
    Dim recordcount As Integer = dt2.Rows.Count
    messagecountlbl.Text = recordcount

这将始终返回值1,我知道我有多个值用于我想要提取的数据。我至少有50个,标签应显示该数量。

我也尝试了Select Count语句,它做了同样的事情。

修复我已将此添加到帖子中,因为有24小时等待回答问题: 我找到了一个快速而简单的修复方法,稍后我将在我编写的类文件中缩短,但这应该可以帮助很多人。

Dim sqlresult As Object
    Dim constring As String = "Connection string goes here"
    Dim dbcon As SqlConnection = New SqlConnection(constring)
    Dim sql As New SqlCommand
    dbcon.Open()
    sql.Connection = dbcon
    sql.CommandText = "SELECT COUNT (*) FROM Tablename WHERE Columnname = 'Unread' AND columnname = '" & Session("sessionvariable") & "'"
    sqlresult = sql.ExecuteScalar
    messagecountlbl.Text = sqlresult

4 个答案:

答案 0 :(得分:4)

你是否错过了Unread周围的引号?

另外......你很容易受到SQL注入。请改用参数

另外......如果您所做的只是获取行数,那么您的代码就会过度

我刚注意到......你变暗 comm2 ,但你的适配器使用 comm

您更新的问题是我本去过的路线。这就是为什么我说你的初始代码是过度的(在内存使用方面......)。一个值的DataAdapters和DataTable无效。

您可能希望将更新的代码更改为以下内容... 再次,查看SQL注入,看看你为什么不应该(或者至少不尝试)构建像这样的SQL字符串

Dim sqlresult As Object
Dim constring As String = "Connection string goes here"
Dim dbcon As SqlConnection = New SqlConnection(constring)
Dim sql As New SqlCommand
dbcon.Open()
sql.Connection = dbcon
sql.CommandText = "SELECT COUNT (*) FROM Tablename WHERE Columnname = 'Unread' AND columnname = @param"
sql.Parameters.AddWithValue("@param", Session("sessionvariable"))

sqlresult = sql.ExecuteScalar
messagecountlbl.Text = sqlresult

答案 1 :(得分:0)

看起来你在“未读”一词的开头缺少单引号。

...& "' AND columnname = 'Unread'")

答案 2 :(得分:0)

我注意到你的第一行声明了一个名为 comm2 的变量,但你以后不再使用它 - 而是只使用 comm 。< / p>

考虑到这一点,您在“未读”周围省略了引号这一事实仍然具有相关性。

答案 3 :(得分:0)

修复我已将此添加到帖子中,因为有24小时的等待回答问题:我找到了一个快速简单的修复程序,我稍后将在我编写的类文件中缩短但这应该可以帮助很多人进行。

Dim sqlresult As Object     Dim constring As String =“连接字符串在这里”     Dim dbcon As SqlConnection = New SqlConnection(constring)     Dim sql As New SqlCommand     dbcon.Open()     sql.Connection = dbcon     sql.CommandText =“SELECT COUNT(*)FROM Tablename WHERE Columnname ='Unread'AND columnname ='”&amp;会话(“会话变量”)&amp; “'”     sqlresult = sql.ExecuteScalar     messagecountlbl.Text = sqlresult