Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从字符串到类型的转换';双倍';无效_Sql_Vb.net - Fatal编程技术网

Sql 从字符串到类型的转换';双倍';无效

Sql 从字符串到类型的转换';双倍';无效,sql,vb.net,Sql,Vb.net,我正在尝试以下代码,但出现以下错误: ex={“从字符串转换”插入d009040(LBRCODE,ENT)到类型“Double”无效。} 请帮助。到目前为止,我可以处理更长的SQL查询: 由于您使用的是VBNET,因此可以使用类CONVERT 前 或 这意味着您提供到SQL中的一个值不能转换为相应字段所需的双精度类型 如果不知道a)您的输入和b)您的数据结构,我们无法告诉您是哪一个 您还应该使用参数化查询进行研究。您传递的所有值都包含在单引号中,因此sql server将它们视为字符串。例如:'

我正在尝试以下代码,但出现以下错误:

ex={“从字符串转换”插入d009040(LBRCODE,ENT)到类型“Double”无效。}

请帮助。到目前为止,我可以处理更长的SQL查询:


由于您使用的是
VBNET
,因此可以使用类
CONVERT


这意味着您提供到SQL中的一个值不能转换为相应字段所需的双精度类型

如果不知道a)您的输入和b)您的数据结构,我们无法告诉您是哪一个


您还应该使用参数化查询进行研究。

您传递的所有值都包含在单引号中,因此sql server将它们视为字符串。例如:'string','23'=两者都是字符串

如果表期望字符串和23为双精度值,则值为 值('string',23)

因此,您需要正确匹配多个列类型的需求

正如其他海报所说,使用参数化查询重写它可能更容易,也更易于维护

编辑:哦,你正在使用oracle。我的错。值作为字符串的问题可能是相同的,所以我将把这篇文章留在这里。

您应该真正使用它来避免SQL注入和此类错误

例如:

Using con = New OracleConnection(connectionString)
    Dim sql = "INSERT INTO d009040 (LBRCODE,ENTRYDATE,BATCHCD,SETNO,SCROLLNO,MAINSCROLLNO,POSTDATE,FEFFDATE,ACTIVITYTYPE,CASHFLOWTYPE,VALUEDATE,BOOKTYPE,DRCR,VCRACCTID,MAINACCTID,MAINMODTYPE,VCRMODTYPE,TRNCURCD,FCYTRNAMT,LCYCONVRATE,LCYTRNAMT,INSTRBANKCD,INSTRBRANCHCD,INSTRTYPE,INSTRNO,INSTRDATE,TOKENNO,PARTICULARS,SYSGENVCR,SHTOTFLAG,SHCLRFLAG,ACTOTFLAG,ACCLRFLAG,MAKER,MAKERDATE,MAKERTIME,CHECKER1,CHECKER2,CHECKER3,CHECKER4,CHECKERDATE,CHECKERTIME,NOAUTHPENDING,NOAUTHOVER,POSTFLAG,AUTHFLAG,FEFFFLAG,CANCELEDFLAG,POSTAUTHFEFFCNCL,UPDTCHKID,PARTCLEARAMT,POSTTIME) VALUES (:LBRCODE,:ENTRYDATE,:BATCHCD,:SETNO,:SCROLLNO,:MAINSCROLLNO,:POSTDATE,:FEFFDATE,:ACTIVITYTYPE,:CASHFLOWTYPE,:VALUEDATE,:BOOKTYPE,DRCR,:VCRACCTID,:MAINACCTID,:MAINMODTYPE,:VCRMODTYPE,:TRNCURCD,:FCYTRNAMT,:LCYCONVRATE,:LCYTRNAMT,:INSTRBANKCD,:INSTRBRANCHCD,:INSTRTYPE,:INSTRNO,:INSTRDATE,:TOKENNO,:PARTICULARS,:SYSGENVCR,:SHTOTFLAG,:SHCLRFLAG,:ACTOTFLAG,:ACCLRFLAG,:MAKER,:MAKERDATE,:MAKERTIME,:CHECKER1,:CHECKER2,:CHECKER3,:CHECKER4,:CHECKERDATE,:CHECKERTIME,:NOAUTHPENDING,:NOAUTHOVER,:POSTFLAG,:AUTHFLAG,:FEFFFLAG,:CANCELEDFLAG,:POSTAUTHFEFFCNCL,:UPDTCHKID,:PARTCLEARAMT,:POSTTIME)"
    Using cmd = New OracleCommand(sql, con)
        con.Open()
        cmd.Parameters.AddWithValue(":LBRCODE", LBRCODE)
        ' add the other parameters as well ... '
        dim result = cmd.ExecuteNonQuery()
    End Using
End Using

请注意,我已经很久没有使用oracle了,所以可能有问题,但我希望您理解它。

您正在连接SQL字符串。使用参数化SQL语句来避免此类错误和SQL injection.ya,但我需要暂时停止:)@user1051505使用到目前为止的参数化查询非常容易。不要只是“把它拉过来”。。。你永远也不会有时间去修复它。@user1051505-看看:
Dim x AS Double = Convert.ToDouble(45)
Dim x AS Double = CDBL(45)
Using con = New OracleConnection(connectionString)
    Dim sql = "INSERT INTO d009040 (LBRCODE,ENTRYDATE,BATCHCD,SETNO,SCROLLNO,MAINSCROLLNO,POSTDATE,FEFFDATE,ACTIVITYTYPE,CASHFLOWTYPE,VALUEDATE,BOOKTYPE,DRCR,VCRACCTID,MAINACCTID,MAINMODTYPE,VCRMODTYPE,TRNCURCD,FCYTRNAMT,LCYCONVRATE,LCYTRNAMT,INSTRBANKCD,INSTRBRANCHCD,INSTRTYPE,INSTRNO,INSTRDATE,TOKENNO,PARTICULARS,SYSGENVCR,SHTOTFLAG,SHCLRFLAG,ACTOTFLAG,ACCLRFLAG,MAKER,MAKERDATE,MAKERTIME,CHECKER1,CHECKER2,CHECKER3,CHECKER4,CHECKERDATE,CHECKERTIME,NOAUTHPENDING,NOAUTHOVER,POSTFLAG,AUTHFLAG,FEFFFLAG,CANCELEDFLAG,POSTAUTHFEFFCNCL,UPDTCHKID,PARTCLEARAMT,POSTTIME) VALUES (:LBRCODE,:ENTRYDATE,:BATCHCD,:SETNO,:SCROLLNO,:MAINSCROLLNO,:POSTDATE,:FEFFDATE,:ACTIVITYTYPE,:CASHFLOWTYPE,:VALUEDATE,:BOOKTYPE,DRCR,:VCRACCTID,:MAINACCTID,:MAINMODTYPE,:VCRMODTYPE,:TRNCURCD,:FCYTRNAMT,:LCYCONVRATE,:LCYTRNAMT,:INSTRBANKCD,:INSTRBRANCHCD,:INSTRTYPE,:INSTRNO,:INSTRDATE,:TOKENNO,:PARTICULARS,:SYSGENVCR,:SHTOTFLAG,:SHCLRFLAG,:ACTOTFLAG,:ACCLRFLAG,:MAKER,:MAKERDATE,:MAKERTIME,:CHECKER1,:CHECKER2,:CHECKER3,:CHECKER4,:CHECKERDATE,:CHECKERTIME,:NOAUTHPENDING,:NOAUTHOVER,:POSTFLAG,:AUTHFLAG,:FEFFFLAG,:CANCELEDFLAG,:POSTAUTHFEFFCNCL,:UPDTCHKID,:PARTCLEARAMT,:POSTTIME)"
    Using cmd = New OracleCommand(sql, con)
        con.Open()
        cmd.Parameters.AddWithValue(":LBRCODE", LBRCODE)
        ' add the other parameters as well ... '
        dim result = cmd.ExecuteNonQuery()
    End Using
End Using