1

Я получаю эту ошибку, когда моя программа вставляет CSV файлы в сервер базы данных Advantage, так что мое решение было примитивным, чтобы вставить строки параметризованными:ошибки преобразования дважды в целом vb.net - сервер базы данных преимущества

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 

так эта функция распознает, когда набор данных представляет собой строку, double, data или integer, но если один из наборов данных пуст, но double, он будет рассматриваться как целочисленный, поэтому я получаю следующую ошибку. есть ли у кого-нибудь лучшее решение для распознавания типов данных? Потому что я не вижу никаких других решений, как автоматически читать SQLCreateFile.txt возвращения типов данных,

+0

Я не понимаю вашего вопроса. Что такое 'SQLCreateFile.txt'-файл? Где вы его используете? Какую ошибку вы получаете точно и где? Ваше 'значение' является строкой, поэтому автоматическое определение типа невозможно. Ваш 'value.Replace (", ",". ")' Неудобен, что это, если значение содержит разделители тысяч групп или изменения культуры ввода? Используйте 'Decimal.TryParse', чтобы проверить, может ли строка быть преобразована в' Decimal', аналогично 'Double' или' Integer'. –

+0

Я имею в виду файл, содержащий все команды создания SQL, я получаю сообщение об ошибке, когда моя программа вставляет все строки в a для каждого цикла. и есть только числа, которые являются либо целыми, либо двойными, все числа, которые содержат, должны быть заменены на. и распознается как double – Sparkm4n

+0

Что означает * пустое, но двойное оно будет рассматриваться как целое * означает? Он не может быть * пустым, но double *, так как он * * или пустой или двойной; он не может быть одновременно одновременно –

ответ

0

Try перебрать Case различение, как это:

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

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

Нет XML или HTML здесь, и поэтому нет 'node' для' .GetType'. Этот вопрос касается импорта текста из файла .CSV. Поэтому нет 'GetType', а не' TypeCode'. –

Смежные вопросы