Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server VB.Net中出错--从字符串转换为uniqueidentifier时转换失败_Sql Server_Vb.net_Datatable_Uniqueidentifier - Fatal编程技术网

Sql server VB.Net中出错--从字符串转换为uniqueidentifier时转换失败

Sql server VB.Net中出错--从字符串转换为uniqueidentifier时转换失败,sql-server,vb.net,datatable,uniqueidentifier,Sql Server,Vb.net,Datatable,Uniqueidentifier,我得到一个“从字符串转换为uniqueidentifier时转换失败。” 我在VB端使用字符串,在数据库端使用GUID 我是否可以在VB端使用一个等效字段,该字段可以很好地处理Sql Server中的“uniqueidentifier”数据类型如果您已经将值作为字符串,并且由于您是手工编写Sql,您可以将其转换为以下格式: strSql.Append("INSERT INTO tableName ") strSql.Append("(GUID, ParentObsSetGUID, ChildOb

我得到一个“从字符串转换为uniqueidentifier时转换失败。”

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


我是否可以在VB端使用一个等效字段,该字段可以很好地处理Sql Server中的“uniqueidentifier”数据类型

如果您已经将值作为字符串,并且由于您是手工编写Sql,您可以将其转换为以下格式:

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

注意:您的代码(以及这个答案)容易受到SQL注入攻击,但这是另一回事。至少有了这个答案,您知道如何将字符串转换为
uniqueidentifier

可能的重复:
uniqueidentifier
GUID
。除此之外,不要连接查询,而是使用sql参数来防止转换或本地化错误,更重要的是,防止sql注入。当表列是GUID时,我应该如何处理空字符串parmList.Add(string.empty)?下面仍然给出相同的错误:插入到aic_obs_set_obs_set_obs_item_xref(GUID、ParentObsSetGUID、ChildObsSetGUID、ChildObsItemGUID)值(转换(uniqueidentifier,'a1771622-6cd6-49f7-8b26-6BEFAF556E')、转换(uniqueidentifier,'4746da06-e830-42a0-9761-ce60a62ea4d1')、转换(uniqueidentifier,'633ce901-1d4d-479c-b295-232fe7b53295')、转换(uniqueidentifier,')