首页 > 解决方案 > 结果始终为零

问题描述

在我的网络服务器上执行这段代码时,结果总是 0 (ZERO)

谁能对这个问题有预感(解决方案更好:-D)

Dim MyTotalPages
Dim Recordset
Dim Connection
Dim aspDBcount
Dim ShowRowCount

ShowRowCount = 3 ' Fixed size

Set Connection = Server.CreateObject("ADODB.Connection")
Set Recordset = Server.CreateObject("ADODB.Recordset")

ConnString = "DRIVER={MySQL ODBC 5.3 Unicode Driver}; SERVER=server_address; UID=a_username;PASSWORD=a_password; OPTION=3; Port=a_port"

Connection.Open ConnString

SQL = "SELECT COUNT(*) AS MyRowCounts FROM `a_database`.`a_table`;"

Set Recordset = Connection.Execute(SQL)

aspDBcount = (Recordset("MyRowCounts") * 1) 

Recordset.Close

MyTotalPages = (aspDBcount * 1) / (ShowRowCount * 1))

Response.Write aspDBcount & "HTML_NEW_LINE" & ShowRowCount & "HTML_NEW_LINE" & MyTotalPages 
  • 输出为 10、3、0

标签: asp-classic

解决方案


利用:

aspDBcount = cInt(Recordset("MyRowCounts")) * 1

在 MySQL 中,SELECT COUNT()返回一个BIGINT整数类型并且需要转换才能操作它并在 VBScript 中正确使用它。

CInt只能在-32,767和之间转换数字32,767

如果SELECT COUNT()超出此范围,则需要CLng改用,范围-2,147,483,6482,147,483,647

您也可以使用CDbl,这有点奇怪。它可以转换巨大的数字并且似乎没有溢出。Invalid number如果您尝试传递一个大得离谱的整数,它最终会返回一个错误。


推荐阅读