ERREUR [22P02] ERREUR: invalid input syntaxe entier: “”;

Jamais vu cette erreur:

ERREUR [22P02] ERREUR: invalid input syntaxe entier: ""; Erreur lors de l'exécution de la requête

Création de la table:

    Public Function PrimkCreate(ByVal myPrimkTable As String, ByVal nCon As OdbcConnection) As Integer
    Dim ans As Integer
    Dim cCommand As OdbcCommand = New OdbcCommand("CREATE TABLE IF NOT EXISTS " + myPrimkTable + "(" & _
            "prm_id int NOT NULL, " & _
            "pkni text, " & _
            "pdatum text, " & _
            "pdatumnaplate text, " & _
            "pdanaodgode int, " & _
            "puldok text, " & _
            "puldokbroj text, " & _
            "pdatumk text, " & _
            "pvrijemek text, " & _
            "pdobid int, " & _
            "pdoboib text, " & _
            "pnabc double precision, " & _
            "purab double precision, " & _
            "ppdv double precision, " & _
            "ppnak double precision, " & _
            "pprodc double precision, " & _
            "pvrstaprimke int, " & _
            "pzapisniktekst text, " & _
            "prez text, " & _
            "CONSTRAINT " & myPrimkTable & "_pkey PRIMARY KEY(prm_id))", nCon)

    ans = cCommand.ExecuteNonQuery()
    cCommand.Dispose()
    Return ans
End Function

Code de mise à jour:

    Public Function update_LPrimk(ByRef primk As Integer, ByVal mCon As OdbcConnection) As Integer
Dim retval As Integer
Dim uCmd As OdbcCommand = New OdbcCommand("UPDATE " & myPrimkTable & " SET " & _
"prm_id=" & primk & ", " & _
"pkni='" & prm.pKni & "', " & _
"pdatum='" & prm.pDatum & "', " & _
"pdatumnaplate='" & prm.pDatumNaplate & "', " & _
"pdanaodgode=" & prm.pDanaodgode & ", " & _
"puldok='" & prm.pUlDok & "', " & _
"puldokbroj='" & prm.pUlDokBroj & "', " & _
"pdatumk='" & prm.pDatumk & "', " & _
"pvrijemek='" & prm.pVrijemek & "', " & _
"pdobid='" & prm.pDobID & "', " & _
"pdoboib='" & prm.pDobOib & "', " & _
"pnabc='" & Replace(prm.pNabc.ToString, ",", ".") & "', " & _
"purab='" & Replace(prm.pURab.ToString, ",", ".") & "', " & _
"ppdv='" & Replace(prm.pPdv.ToString, ",", ".") & "', " & _
"ppnak='" & Replace(prm.pPnak.ToString, ",", ".") & "', " & _
"pprodc='" & Replace(prm.pProdc.ToString, ",", ".") & "', " & _
"pvrstaprimke=" & prm.pVrstaPrimke & ", " & _
"pzapisniktekst='" & prm.pZapisnikTekst & "', " & _
"prez='" & prm.pRez & "' " & _
"WHERE prm_id=" + primk.ToString, mCon)
retval = uCmd.ExecuteNonQuery()
uCmd.Dispose()
Return retval
End Function

Requête ressemble à ça:

UPDATE primke SET prm_id=1, pkni='U', pdatum='07.01.2013', pdatumnaplate='10.01.2013',
pdanaodgode=3, puldok='ghkzug gugug', puldokbroj='jkhk', pdatumk='', pvrijemek='', 
pdobid='', pdoboib='', pnabc='0', purab='0', ppdv='0', ppnak='0', pprodc='0', 
pvrstaprimke=0, pzapisniktekst='', prez='' WHERE prm_id=1

J'ai beaucoup de tables où j'ai exécuter des commandes similaires mais n'ont jamais vu une telle erreur.

Quel pourrait être le problème?

'0' n'est pas un nombre valide, c'est le caractère littéral. 0 est un nombre. Vous devez également pas magasin de dates dans text colonnes.
Les Dates et les " 0 " sont ici en raison des enjeux liés à l'internationalisation et VB.NET les questions de. Ces '0' est pour la double précision, les numéros enregistrés de cette façon. OK, pas bon mais je l'utilise dans beaucoup de tables. Voici quelque chose de spécifique.
Le '0' est à la racine de votre problème. Il n'est pas un nombre. Vous devez utiliser 0 pour un certain nombre de valeur.
'' n'est pas un nombre double précision. Si vous voulez dire NULL, utilisez la valeur NULL.
En aparté, n'est-ce pas là quelque chose qui utilise des espaces et des valeurs soumises à VB.net? Il doit y avoir une meilleure approche que tout cela concaténation de chaîne. Et vous devriez être en affaire avec L10N et I18N questions sur les bords de la demande: standardiser sur l'entrée, de localiser sur la production.

OriginalL'auteur Wine Too | 2013-01-07