将双精度转换为整数vb.net-advantage数据库服务器时出错
当我的程序将CSV文件插入Advantage数据库服务器时,我遇到了这个错误,所以我的原始解决方案是插入参数化的行:将双精度转换为整数vb.net-advantage数据库服务器时出错,vb.net,type-conversion,sql-insert,advantage-database-server,Vb.net,Type Conversion,Sql Insert,Advantage Database Server,当我的程序将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 = Zeich
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的解决方案,请尝试像这样迭代大小写区别:
switch (Type.GetTypeCode(node.GetType()))
{
case TypeCode.Decimal:
' Handle Decimal
break;
case TypeCode.Int32:
' Handle Int32
break;
'...
}
我不明白你的问题。什么是
SQLCreateFile.txt
-文件?你在哪里使用它?你得到的确切错误是什么?在哪里?您的值是一个字符串,因此无法进行自动类型检测。您的值.Replace(“,”,“)
很难处理,如果该值包含数千个组分隔符,或者输入区域性发生了变化,该怎么办?使用Decimal.TryParse
检查字符串是否可以转换为Decimal
,类似于Double
或Integer
。我指的是包含所有SQL create命令的文件,当我的程序在for each循环中插入所有行时,会出现错误。只有整数或双精度的数字,所有包含的数字都需要替换为。并被识别为double除了double之外,空的是什么意思?它将被视为整数?它不能是空的,而是双重的,因为它不是空的就是双重的;它不能同时是两个,我的意思是double也可以是空的,也可以是整数,这就是问题所在,我需要一种算法,即使字段为空,也能识别它是double还是整数。这里没有XML或HTML,因此没有节点
来拥有。GetType
。这个问题是关于从.CSV文件导入文本的。因此,没有GetType
,也没有TypeCode
。