2013-10-31 72 views
4

我得到「從字符串轉換爲uniqueidentifier時轉換失敗。」VB.Net中的錯誤 - 從字符串轉換爲uniqueidentifier時轉換失敗

我使用的VB側的字符串,並在數據庫端GUID .....

是否有一個等效場,我可以在VB端使用,可以用「唯一標識符很好地工作在SQL Server中的「數據類型

+0

可能的重複:http://stackoverflow.com/q/13428960/261997 – RThomas

+1

'uniqueidentifier'是'GUID'。 除此之外,不要連接你的查詢,但使用sql參數來防止轉換或本地化錯誤,更重要的是防止sql注入。 –

+0

如何在表列是GUID時處理空字符串parmList.Add(String.Empty)? – User1

回答

1

如果你已經有自己的價值作爲一個字符串,因爲你是用手寫出你的SQL,你可以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) 

如果你寧願插入NULL進GUID列,那麼你需要改變過去的你的代碼位是這樣,而不是:

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 

注:您的代碼,因爲它代表(這個答案)是/是容易受到SQL仁濟ction攻擊,但這是另一回事。至少有了這個答案,你知道如何將字符串轉換爲uniqueidentifier

+0

下仍然給了我同樣的錯誤:INSERT INTO aic_obs_set_obs_set_obs_item_xref(GUID,ParentObsSetGUID,ChildObsSetGUID,ChildObsItemGUID) VALUES(CONVERT(唯一標識符, 'a1771622-6cd6-49f7-8b26-6befafaf556e'), CONVERT(唯一標識符,「4746da06- e830-42a0-9761-ce60a62ea4d1' ), \t \t CONVERT(唯一標識符, '633ce901-1d4d-479c-b295-232fe7b53295'), \t \t CONVERT(唯一標識符, '')) – User1

+0

嘗試此更新。我只是調整了兩次;-) –

相關問題