2017-08-20 8 views
0

Ich bekomme die "System.FormatException: Die Eingabe hat das falsche Format." Fehler beim zweiten Versuch, während der erste einwandfrei funktioniert.Parameter.AddWithValue fehlgeschlagen

Weiß jemand, warum das so ist?

Versuch 1:

Using nCmdIns1 As SQLite.SQLiteCommand = cnUser.CreateCommand 
     With nCmdIns1 
      .CommandText = "INSERT INTO images (oemimageguid,imagetitle,imagecategory,imagesize,imageblob256) VALUES (@1,@2,@3,@4,@5)" 
      .Parameters.Add("@1", DbType.String).Value = uOEMImageGUID 
      .Parameters.Add("@2", DbType.String).Value = uTitle 
      .Parameters.Add("@3", DbType.Int32).Value = iCat 
      .Parameters.Add("@4", DbType.Int32).Value = uImageSize 
      .Parameters.Add("@5", DbType.Binary).Value = uBytes 
      .ExecuteNonQuery() 
     End With 
    End Using 

Versuch 2:

Using nCmdIns2 As SQLite.SQLiteCommand = cnUser.CreateCommand 
     With nCmdIns2 
      .CommandText = "INSERT INTO images (oemimageguid,imagetitle,imagecategory,imagesize,imageblob256) VALUES (@1,@2,@3,@4,@5)" 
      .Parameters.AddWithValue("@1", DbType.String).Value = uOEMImageGUID 
      .Parameters.AddWithValue("@2", DbType.String).Value = uTitle 
      .Parameters.AddWithValue("@3", DbType.Int32).Value = iCat 
      .Parameters.AddWithValue("@4", DbType.Int32).Value = uImageSize 
      .Parameters.AddWithValue("@5", DbType.Binary).Value = uBytes 
      .ExecuteNonQuery() 
     End With 
    End Using 

Ich habe versucht, das Problem durch Entfernen Parameter zu isolieren und Werte eins nach dem anderen, aber am Ende habe ich die gleiche Fehler selbst mit dieser spärlichen Linie:

Using nCmdIns3 As SQLite.SQLiteCommand = cnUser.CreateCommand 
     With nCmdIns3 
      .CommandText = "INSERT INTO images (oemimageguid) VALUES (@1)" 
      .Parameters.AddWithValue("@1", DbType.String).Value = uOEMImageGUID 
      .ExecuteNonQuery() 
     End With 
    End Using 

Hier ist ein Screenshot von der Ausnahme für Versuch 3:

enter image description here

+1

Der zweite Parameter ist der Wert AddWithValue selbst, nicht der Typ https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue (v = vs.110) .aspx versuche in jedem Fall immer die erste Methode zu verwenden, da du mehr Kontrolle über den Typ des Parameters hast – Steve

+0

Wow, danke für die Klarstellung. Aber wann kann ich nach "AddWithValue" einen ") .Value" hinzufügen? – tmighty

+1

Sie können, weil die Add-Methode den Parameter zurückgibt und Wert eine Eigenschaft des Parameters ist. – Steve

Antwort

4

Der zweite Parameter von AddWithValue ist der Wert selbst, nicht der Typ

Sehen MSDN AddWithValue

In jedem Fall versuchen, immer die erste Methode zu verwenden, da Sie mehr Kontrolle über das haben Typ des Parameters.

Can we stop using AddWithValue already?

Using nCmdIns2 As SQLite.SQLiteCommand = cnUser.CreateCommand 
    With nCmdIns2 
     .CommandText = "INSERT INTO images (oemimageguid,imagetitle,imagecategory,imagesize,imageblob256) VALUES (@1,@2,@3,@4,@5)" 
     .Parameters.AddWithValue("@1", uOEMImageGUID) 
     .Parameters.AddWithValue("@2", uTitle) 
     .Parameters.AddWithValue("@3", iCat) 
     .Parameters.AddWithValue("@4", uImageSize) 
     .Parameters.AddWithValue("@5", uBytes) 
     .ExecuteNonQuery() 
    End With 
End Using 
Verwandte Themen