2013-10-31 2 views
4

"문자열을 uniqueidentifier로 변환 할 때 변환이 실패했습니다." 나는 VB 측에 문자열과 데이터베이스 측에 GUID를 사용하고VB.Net에서 오류 - 문자열에서 고유 식별자로 변환 할 때 변환하지 못했습니다.

.....

가되는 "고유 식별자와 함께 잘 작동 할 수 있습니다 나는 VB 측에서 사용할 수있는 해당 필드 이미 문자열로 당신이 손으로 당신의 SQL을 작성 이후 값이있는 경우 SQL Server의 "데이터 유형

+0

가능한 복제본 : http://stackoverflow.com/q/13428960/261997 – RThomas

+1

'uniqueidentifier'는 'GUID'입니다. 그 외에도 쿼리를 연결하지 말고 sql 매개 변수를 사용하여 변환 또는 현지화 오류를 방지하고 SQL 주입을 방지하는 것이 중요합니다. –

+0

테이블 열이 GUID 일 때 어떻게 빈 문자열 parmList.Add (String.Empty)를 처리해야합니까? – User1

답변

1

,이처럼 CONVERT 수 있습니다

strSql.Append("INSERT INTO tableName ") 
strSql.Append("(GUID, ParentObsSetGUID, ChildObsSetGUID, ChildObsItemGUID) ") 
strSql.Append(String.Format("VALUES (CONVERT(uniqueidentifier, '{0}'), CONVERT(uniqueidentifier, '{1}'), CONVERT(uniqueidentifier, '{2}'), CONVERT(uniqueidentifier, '{3}'))", parmList.ToArray)) 

편집 :하는 경우 너야. 빈 문자열을했습니다 당신이 새 GUID를 필요로, 다음을 수행하십시오

parmList.Add(Guid.NewGuid().ToString()) 

대신

parmList.Add(String.Empty) 

당신이 오히려 GUID 컬럼에 NULL를 삽입 할 경우에, 당신이 마지막을 변경해야 코드의 비트는 대신이 같은 수 :

parmList.Add(dtNewGUID.Rows(0).Item(0).ToString) 
parmList.Add(dtResultParentGUID.Rows(0).Item(0).ToString) 
parmList.Add(dtResultChildGUID.Rows(0).Item(0).ToString) 
// remove the line with the empty string parameter 
strSql.Append("INSERT INTO tableName ") 
strSql.Append("(GUID, ParentObsSetGUID, ChildObsSetGUID, ChildObsItemGUID) ") 
strSql.Append(String.Format("VALUES (CONVERT(uniqueidentifier, '{0}'), CONVERT(uniqueidentifier, '{1}'), 
CONVERT(uniqueidentifier, '{2}'), NULL)", parmList.ToArray)) 
// Note the change to the last line. '{3}' becomes NULL. 
// Make sure you remove the single quotes 

참고 : 귀하의 코드는 스탠드로 (이 답)입니다/A SQL 인제에 취약 그러나 다른 문제입니다. 적어도이 대답으로 문자열을 uniqueidentifier으로 변환하는 방법을 알고 있습니다.

+0

다음은 여전히 ​​날 같은 오류를 제공합니다 :) (GUID, ParentObsSetGUID, ChildObsSetGUID, ChildObsItemGUID가) VALUES (고유 식별자, 'a1771622-6cd6-49f7-8b26-6befafaf556e'(CONVERT aic_obs_set_obs_set_obs_item_xref INTO CONVERT (고유 식별자를 삽입, '4746da06- e830-42a0-9761-ce60a62ea4d1 '), \t \t CONVERT (고유 식별자,'633ce901-1d4d-479c-b295-232fe7b53295 '), \t \t CONVERT (고유 식별자,' ')) – User1

+0

이 업데이트를보십시오. 나는 방금 두번 수정했다 ;-) –

관련 문제