我收到“从字符串转换为唯一标识符时转换失败。”
我在 VB 端使用字符串,在数据库端使用 GUID .....
是否有我可以在 VB 端使用的等效字段,可以很好地与 Sql Server 中的“唯一标识符”数据类型一起使用
我收到“从字符串转换为唯一标识符时转换失败。”
我在 VB 端使用字符串,在数据库端使用 GUID .....
是否有我可以在 VB 端使用的等效字段,可以很好地与 Sql Server 中的“唯一标识符”数据类型一起使用
如果您已经将值作为字符串,并且由于您是手动写出 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
.