2012-08-29 3 views
-1

유효하지 않은 입력합니다.변환 '더블'나는 코드의 다음 조각을 시도하고 나는 다음과 같은 오류를 얻고있다

도와주세요. 지금까지 더 긴 SQL 쿼리로 작업 할 수있었습니다. 당신이 VBNET을 사용하고 있기 때문에

Dim cmd3 As New OracleCommand 
       cmd3.Connection = conn 
       Dim timepara As String = Now.Hour & Now.Minute & Now.Second & Now.Millisecond 
       cmd3.CommandText = "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 ('" + lbr + "','" + datepara + "','TR-MOBDS','" + k + "','" + k + "','" + k + "','" + datepara + "','" + datepara + "','CR','CR','" + datepara + "','ZZ','C','" + internalaccount + "','" + internalaccount + "','47','47','INR','" + amount + "','1','" + amount + "','0','0','99','000000000000','" + datepara + "','0','DDS CR. From Agent','1','Y','Y','Y','Y','0','" + datepara + "','" + timepara + "','0','0','0','0','" + datepara + "','" + timepara + "','0','1','P','A','F','0','0','0','0','" + timepara + "')" 
       cmd3.CommandType = CommandType.Text 
       cmd3.ExecuteNonQuery() 
+4

SQL 인젝션에 대해 알고 계십니까? – gbn

+1

SQL 문자열을 연결합니다. ** 이러한 ** 오류 및 SQL 삽입을 피하려면 매개 변수화 된 SQL 문을 사용하십시오. – adatapost

+0

나중에하지만 당분간 이것을 당겨야합니다 :) – user1051505

답변

1

SQL 삽입 및 이러한 오류를 방지하려면 실제로 Parameters을 사용해야합니다.

예를 들어

: 뭔가 잘못이있을 수 있습니다, 그래서 내가 나이를 위해 오라클을 사용하지 않은

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 

참고,하지만 난 당신이 어쨌든 그것을 이해 바랍니다.

0

:(, 당신은 CONVERT

이 전.

Dim x AS Double = Convert.ToDouble(45) 

또는

Dim x AS Double = CDBL(45) 
2

뜻 클래스를 사용할 수있는 값 중 하나를 사용하면 당신의 SQL에 제공하는 double 형으로 변환 할 수 없습니다. 필드가 필요합니다.

귀하의 입력 내용 및 귀하의 데이터 구조를 알지 못하면 어떤 정보를 알려 드릴 수 없습니다.

매개 변수화 된 쿼리를 사용하여 조사해야합니다.

1

전달할 모든 값은 작은 따옴표로 묶여 있으므로 SQL Server는이 값을 문자열로 간주합니다. 예 : 'string', '23'= 둘 다 문자열입니다.

테이블은

그래서 당신은 정확하게 많은 많은 열 유형 요구 사항을 충족해야합니다 (23, '문자열') 당신의 가치는 VALUES 것 double로서 문자열 (23)를 기대합니다.

다른 포스터에서 말했듯이 - 매개 변수가있는 쿼리를 사용하여 쉽게 다시 작성하는 것이 더 쉽고 확실합니다.

편집 : 오 - 당신은 오라클을 사용하고 있습니다. 내 잘못이야. values-as-strings의 문제는 같을 수 있으므로이 게시물을 떠날 것입니다.

관련 문제