2014-01-14 4 views
2

데이터를 데이터베이스로 가져 오는 위치에서 csv가 있습니다. The floating point value '496e626' is out of the range of computer representation (8 bytes). Incorrect syntax near '496e626'.매개 변수화 된 sql 쿼리 문제

내가 부동 소수점 오류를 이해하지 못하는 문자열/텍스트로 처리해야합니다

myCommand.Parameters.Add("@cn", SqlDbType.Text); 
myCommand.Parameters["@cn"].Value = comp.Rows[i][1].ToString(); 

는 경우 comp.Rows[i][1]의 값은 내가이 오류가 X'496e626randomcharacters'입니다. 여기에 무슨 문제가 있습니까?

+1

쿼리는 어떻게 생겼습니까? – Andrei

+1

당신은'DataTable'을 사용하고 있습니까? 열의 유형은 무엇입니까 [1]? –

+1

'AddWithValue ("@ cn", comp.Rows [i] [1])'을 사용해 보셨습니까? – James

답변

3

사용

SqlDbType.VarChar 

보다는

SqlDbType.Text : String. A variable-length stream of non-Unicode data with a maximum length of 2 31 -1 (or 2,147,483,647) characters.

Ref

SqlDbType.Text 

. 당신이 점점 오류가 SQL 서버에서 오는

myCommand.Parameters.Add("@cn", SqlDbType.VarChar).Value=comp.Rows[i][1].ToString(); 
0

이보십시오.

관련 SQL 코드를 표시하지 않았지만이 값을 저장 프로 시저에 전달한 다음이를 데이터 테이블에 삽입한다고 가정합니다. 테이블의 매개 변수 유형과 열 유형은 모두 VARCHAR 또는 TEXT이어야합니다. 그렇지 않으면 SQL이 변환을 시도합니다.

또한 매개 변수와 숫자 값을 비교할 때주의하십시오. 예를 들어,이 같은 비교를 수행하려고 할 경우 :

WHERE @CN = 1.234 

SQL이 VARCHAR 부동 소수점 값으로 변환하려고합니다. ISNUMERIC과 같은 메소드를 사용하면 실패 할 비교를 피할 수 있습니다.

0

및 SQL 숫자 값에 문자열 값을 변환하려고 할 때마다 발생합니다

관련 문제