尝试存储 GUID 时出现字符串转唯一标识符的转换错误

3

请帮我查看我的代码。

当我尝试获取 xml 数据并将其存储在 SQL 中时,出现了“转换失败”的错误。

foreach (entity ent in _entity) 
{               
    con.Open();
    string query = "INSERT INTO tblDemo (ContractType,P2P_Request_SYSID,EntityName,SYSID,ETag,Name,EntityInstanceId,EntityVersion) Values ('" + ent.Type+"','" +ent.P2P_Request_SYSID + "','" + ent.EntityName + "','" + ent.SYSID + "','" + ent.ETag + "','" + ent.Name + "','" + ent.EntityInstanceId + "','" + ent.EntityVersion + "')";
    SqlCommand cmd = new SqlCommand(query, con);

    cmd.ExecuteNonQuery();
    con.Close();
}

哪一列是类型为uniqueidentifier的,你传递了什么值?例如B14BC077-F1DF-457C-9F7E-7CB9E0BC1CF3可以工作,但123456会给你这个错误。 - Equalsk
5
首先,使用查询参数。其次,如果您正在使用C#生成GUID,请将其存储为字符串。 - Dan Bracuk
你好Equialsk,P2P_Request_SYSID,SYSID和EntityInstanceId三列都具有唯一标识符数据类型。 - Prashantkumar
B14BC077-F1DF-457C-9F7E-7CB9E0BC1CF3 我的数据格式 - Prashantkumar
请注意,它无法将“Empty”或“NULL”字符串转换为“uniqueidentifier”,因此您可能会遇到该错误。 - Rahul Hendawe
显示剩余9条评论
1个回答

2

用户参数并尝试为唯一标识符指定数据类型

foreach (entity ent in _entity) 
{               
    con.Open();
    string query = @"INSERT INTO tblDemo (ContractType,P2P_Request_SYSID,EntityName,SYSID,
                     ETag,Name,EntityInstanceId,EntityVersion)
                     Values (@Type,@P2P_Request_SYSID,@EntityName,@SYSID,@ETag,@Name,
                     @EntityInstanceId,@EntityVersion)";
    SqlCommand cmd = new SqlCommand(query, con);
    cmd.Parameters.AddWithValue("@Type", ent.Type);
    cmd.Parameters.Add( "@P2P_Request_SYSID", SqlDbType.UniqueIdentifier, 16 ).Value = ent.P2P_Request_SYSID;
    cmd.Parameters.AddWithValue("@EntityName", ent.EntityName);
    cmd.Parameters.Add( "@SYSID", SqlDbType.UniqueIdentifier, 16 ).Value = ent.SYSID;
    cmd.Parameters.AddWithValue("@ETag", ent.ETag);
    cmd.Parameters.AddWithValue("@Name", ent.Name);
    cmd.Parameters.Add( "@EntityInstanceId", SqlDbType.UniqueIdentifier, 16 ).Value = ent.EntityInstanceId;
    cmd.Parameters.AddWithValue("@EntityVersion", ent.EntityVersion);

    cmd.ExecuteNonQuery();
    con.Close();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接