【问题标题】:conversion error double to integer vb.net - advantage database server转换错误 double 到整数 vb.net - 优势数据库服务器
【发布时间】:2016-08-29 11:45:41
【问题描述】:

当我的程序将 CSV 文件插入 Advantage 数据库服务器时出现此错误,因此我的原始解决方案是插入参数化的行:

Private Sub AddParameters(ByRef db As DBUmgebung.cdb.SQL, r As SeekZeilen)
        Try
            For i As Integer = 0 To r.erste_Zeile.Length - 1
                Dim value As String = ZeichensatzAnpassen(r._Rest(i))

                If value = "" Then
                    db.FeldWertChar(r.erste_Zeile(i), DBNull.Value)

                ElseIf value Is Nothing OrElse IsDBNull(value) Then
                    db.FeldWertChar(r.erste_Zeile(i), DBNull.Value)

                ElseIf IsNumeric(value) Then
                    If value.Contains(",") Then
                        db.FeldWertDecimal(r.erste_Zeile(i), value.Replace(",", "."))
                    Else

                        db.FeldWertInteger(r.erste_Zeile(i), value)
                    End If

                    ElseIf IsDate(value) Then
                        db.FeldWertDate(r.erste_Zeile(i), value)

                    Else
                        db.FeldWertChar(r.erste_Zeile(i), value)

                    End If
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

所以这个函数识别数据集何时是字符串、双精度、数据或整数,但如果其中一个数据集为空但双精度,它将被视为整数,所以我得到以下错误。有没有人有更好的解决方案来识别数据类型?因为我没有看到任何其他解决方案自动读取返回数据类型的 SQLCreateFile.txt

【问题讨论】:

  • 我不明白你的问题。 SQLCreateFile.txt 文件是什么?你在哪里使用它?你到底得到了什么错误,在哪里?您的 value 是一个字符串,因此无法进行自动类型检测。您的value.Replace(",", ".") 很尴尬,如果值包含千组分隔符或输入文化发生变化怎么办?使用Decimal.TryParse 检查字符串是否可以转换为Decimal,类似于DoubleInteger
  • 我的意思是包含所有 SQL 创建命令的文件,当我的程序在每个循环中插入所有行时出现错误。并且只有整数或双精度数,所有包含 的数字都需要替换为 。并被识别为双重
  • empty but double it will be treated as integer 是什么意思?它不能是empty but double,因为它是either empty 或double;不能同时是两个
  • 我的意思是双精度可以是空的也可以是整数,这就是问题所在,我需要算法能够识别它是双精度还是整数,即使字段为空

标签: vb.net type-conversion sql-insert advantage-database-server


【解决方案1】:

尝试像这样迭代区分大小写:

switch (Type.GetTypeCode(node.GetType()))
{
    case TypeCode.Decimal:
        ' Handle Decimal
        break;

    case TypeCode.Int32:
        ' Handle Int32
        break;
     '...
}

【讨论】:

  • 这里没有 XML 或 HTML,因此没有node 有一个.GetType。这个问题是关于从 .CSV 文件中导入文本的。因此,没有GetType,也没有TypeCode
猜你喜欢
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 2021-08-13
  • 2011-02-02
  • 2013-09-30
  • 1970-01-01
  • 2010-10-31
  • 2015-05-01
相关资源
最近更新 更多