将字符串分配给抛出算术运算的字符串变量会导致溢出,

本文关键字:字符串 溢出 变量 算术运算 分配 | 更新日期: 2023-09-27 17:56:14

在处理以下代码时出现一些错误。

queryCommand= "select user_name,user_lastname,user_address from usertable"
objODBCDataReader = dbconObject.GetDataReader(queryCommand)
If objODBCDataReader.HasRows = True Then
   Dim userName = objODBCDataReader.Item("user_name").ToString() 'here it throws error as Arithmetic operation resulted in an overflow
End If

GetDataReader 是一种方法,它将接受查询作为字符串并将结果作为 Datareader 返回。

让我知道为什么在将字符串值分配给字符串变量时会发生此错误?

我正在使用

VisualStudio 2012
mysql 5.0
odbc driver 3.51
64 bit os

将字符串分配给抛出算术运算的字符串变量会导致溢出,

在你的 IF 语句中,你正在测试是否存在 ROWS ,

此时您还没有读取任何数据?

queryCommand= "select user_name,user_lastname,user_address from usertable"
objODBCDataReader = dbconObject.GetDataReader(queryCommand)
If objODBCDataReader.HasRows = True Then
  objODBCDataReader.Read()
  lsfinyear = objODBCDataReader.Item("user_name") 'here it throws error as Arithmetic operation resulted in an overflow
End If

我有几个建议给你:

1 让我们成为eof using command,它将在使用结束时自动处理连接,即使出现任何异常,您也无需为连接问题而烦恼。

2 使用.Read方法读取行,然后只有您可以使用其列索引或列名访问相应列中的值。

3 您可以使用while代替检查hasRow然后读取。

现在考虑以下代码:

Dim queryString As String = "select user_name,user_lastname,user_address from usertable"
Using connection As New OdbcConnection(connectionString)
    Dim command As New OdbcCommand(queryString, connection)
    connection.Open()
    Dim reader As OdbcDataReader = command.ExecuteReader()
    While reader.Read()
        Console.WriteLine("user name={0}", reader(0).ToString)
        Console.WriteLine("user lastname{0}", reader("user_lastname").ToString)
    End While      
    reader.Close()
End Using

您将从这里获得更多细节和示例