2017-02-21 53 views
0

我们如何使用VB代码来计算特定查询或SQL语句的记录数?在VB代码中显示特定查询的记录数

我一直在努力,并尝试过不同的方法,我没有得到它来显示正确的记录数。这是我的代码,mycommand是一个sql语句。

Dim mycommand As New SqlCommand("SELECT count(*) 
    FROM ziBLE a INNER JOIN meBLE b ON a.ziLD = b.zp5 
    WHERE (b.ae" < "@ae 

    mycommand.Parameters.AddWithValue("@ae", ae_value) ' 

Dim count As Int16 = Convert.ToInt16(mycommand.ExecuteScalar()) 
      MsgBox(count.ToString()) 

或此代码根据以下网站?但给我一个错误消息,说结果不能是一个整数。请指教。谢谢

Dim result as Integer = ds1.Tables("Count").Rows.Count 

http://www.vbforums.com/showthread.php?621729-RESOLVED-Trying-to-get-Row-count-from-SELECT-query

回答

0

你建议立即进行删除尝试财产以后这样的:

 public Int32 name(int @a) 
     { 
      SqlConnection con = new SqlConnection(string); 
      try 
      { 
       con.Open(); 
string sql = "SELECT count(*)FROM ziBLE a INNER JOIN meBLE b ON a.ziLD = b.zp5 WHERE (b.ae" < "@ae)" 
       SqlCommand cmd = new SqlCommand(sql, con); 
       cmd.CommandType = CommandType.Text; 
       cmd.Parameters.AddWithValue("@a", a); 
       return Convert.ToInt32(cmd.ExecuteScalar()); 

      } 

      catch (Exception ex) 
      { 
       throw ex; 
      } 
      finally 
      { 
       con.Close(); 
      } 
     } 

这是在C#中的例子,但你可以尝试转换为VB,我认为这应该工作好,我建议你可以直接查询数据库,然后在你的应用程序中调用你在db中创建的标量函数,但是如果你不喜欢代码为db的代码,尝试将示例与visual basic

+0

谢谢对于你的代码,我认为是很好的,但是你有一个简单的代码,就像下面这个简短的代码一样,我们不需要编写另一个SQL语句,因为我已经写了一个,但是它的工作原理?昏暗的结果为Integer = ds1.Tables(“Count”)。Rows.Count – Johnseito

0

你可以做一个标量函数在SQL Server这样的:

Create Function <Function_name> (@a int) 
Returns int 
as 
Begin 
Declare @b int; 
SELECT count(*) 
FROM ziBLE a INNER JOIN meBLE b ON a.ziLD = b.zp5 
WHERE b.ae" < "@ae 
Return @ret; 
End 

然后在应用中,你可以写这样的事情:

Public Function Youre_function_name(ByVal @a as integer) as Integer 
Dim result as Int32 = 0 
Dim sql as string = "Select * From <Function_name> (@a)" 
Using conn as SqlConnection(connstring) 
Dim cmd as sqlcommand(sql,conn) 
cmd.Parameters.AddWithValue("@a", a) 
Try 
conn.Open() 
result = Convert.ToInt32(cmd.ExecuteScalar()) 
conn.Close() 
Catch ex as Exception 
Throw ex 
End Try 

Return result 

End Function 

我认为它的执行更清洁的方式,结果会更快,因为查询是由数据库引擎执行的,它使用使用数据库引擎的RAM内存,记住它是为那个(查询执行)创建的,并且标量结果是唯一的数据被发送到应用程序,而不是从应用程序中完成整个过程,并且在完成之后您可以分析执行计划以评估您是否使用(*),或者使用表的主键以利用集群索引...查看这些代码并评估它们...

+0

不错的代码,非常整齐。但在我的VB代码中,我已经有了一个类似的SQL语句,只将查询结果发送到excel。我也有一个函数,这取决于用户选择它与查询功能,并将其发送到Excel。这意味着根据你的代码,我必须把你的函数放到另一个函数中。我也必须创建像6个函数,然后因为我有6个不同的查询,我必须总数。我仍然认为这个代码昏暗的结果为Integer = ds1.Tables(“Count”).Rows.Count比较容易,因为我已经有了循环查询,除非这段代码不起作用。 Thx – Johnseito

+0

相反,我只是用这个代码(下面)来计数。它使我的代码运行时间更长,因为一个循环可以记录记录,另一个循环可以访问查询记录。对于每行DataRow在dataset.Tables(0).Rows cnt + = 1下一步 – Johnseito