从未见过这样的错误:
错误[22P02]错误:整数的无效输入语法:“”;执行查询时出错
创建表:
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
更新代码:
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
查询看起来完全像这样:
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
我有很多表在其中运行类似的命令,但从未见过这样的错误。 可能是什么问题?
我建议阅读手册中的“ 常量 ”一章。这是一篇简短且内容丰富的文章。 错误消息的原因是,这''是一个 空字符串 ,没有数字类型(如)的表示形式integer。
''
integer
@a_horse_with_no_name:确切地说,'0'是PostgreSQL的 字符串 常量,可以强制转换为,也可以强制转换integer为,这text只是text字符串常量的默认值。考虑这个演示:
'0'
text
CREATE TEMP TABLE t (i int); INSERT INTO t VALUES (1); INSERT INTO t VALUES ('2'); -- single row inserts to make sure .. INSERT INTO t VALUES ('3'::int); -- .. type is not coerced to type INSERT INTO t VALUES (4::bigint); -- .. of first row by VALUES expression. INSERT INTO t VALUES (5::numeric); INSERT INTO t VALUES (6); UPDATE t SET i = '0' WHERE i = '6'; SELECT * FROM t;
SQL提琴。