【发布时间】: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,类似于Double或Integer。 -
我的意思是包含所有 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