我在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
答案 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