当从字符字符串转换为唯一标识符时,我收到了“转换失败”的消息。
我在VB端使用字符串,在数据库端使用GUID.....
在VB端是否有等效的字段可用,可以很好地与Sql Server中的“uniqueidentifier”数据类型配合使用?
当从字符字符串转换为唯一标识符时,我收到了“转换失败”的消息。
我在VB端使用字符串,在数据库端使用GUID.....
在VB端是否有等效的字段可用,可以很好地与Sql Server中的“uniqueidentifier”数据类型配合使用?
如果您已经将值作为字符串,并且由于您手动编写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 注入攻击的漏洞,但这是另一回事。至少通过这个答案,您知道如何将字符串转换为 uniqueidentifier
。
uniqueidentifier
是一个GUID
。除此之外,不要连接你的查询,而是使用 SQL 参数来防止转换或本地化错误,更重要的是防止 SQL 注入。 - Tim Schmelter