4

我收到“从字符串转换为唯一标识符时转换失败。”

我在 VB 端使用字符串,在数据库端使用 GUID .....

是否有我可以在 VB 端使用的等效字段,可以很好地与 Sql Server 中的“唯一标识符”数据类型一起使用

4

1 回答 1

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)

如果您希望将 aNULL插入 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 注入攻击,但这是另一回事。至少有了这个答案,您就知道如何将字符串转换为uniqueidentifier.

于 2013-10-31T14:51:25.780 回答