C# 向Sql Server(UniqueIdentifier列)插入Guid值时出错。(内有说明)

C# 向Sql Server(UniqueIdentifier列)插入Guid值时出错。(内有说明),c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我的数据库中有一个表,其中有两列uniqueidentifier不是null类型。我正试图从asp.net c#在该表中插入一行,如下所示 sqlCmd.CommandText = string.Format("Insert Into Member(MemberNo,MemberEmpId,...) values({0},{1},... )", MemNo, MemEmpNo, ...); 它向我抛出了以下异常 “浮点值'24e46222'超出计算机的范围 表示法(8字节)。“a8c”附近的语

我的数据库中有一个表,其中有两列uniqueidentifier不是null类型。我正试图从asp.net c#在该表中插入一行,如下所示

sqlCmd.CommandText = string.Format("Insert Into Member(MemberNo,MemberEmpId,...) values({0},{1},... )", MemNo, MemEmpNo, ...);
它向我抛出了以下异常

“浮点值'24e46222'超出计算机的范围 表示法(8字节)。“a8c”附近的语法不正确。浮点 点值“6664e7925”超出计算机表示的范围 (8字节)。”

我在谷歌上搜索了这个错误,得到了一个,我试过了,但仍然给出了相同的错误。有人能帮我解决这个问题吗。我找不到比这个更好的东西


提前谢谢

如果使用参数化查询,而不是将所有值嵌入查询本身,则此问题可能会得到解决。查看以下示例:


您可能会遇到引号问题,其中一个文本的引号没有转义,或者SQL解释它的参数类型不匹配,或者其他问题。

与往常一样,问题是由字符串连接引起的。
如果使用了参数化查询,则不会出现任何问题

sqlCmd.CommandText = "Insert Into Member(MemberNo,MemberEmpId,...) " + 
                     "values(@guid, @memID,... )";
sqlCmd.Parameters.AddWithValue("@guid", MemNo);
sqlCmd.Parameters.AddWithValue("@memID", MemEmpNo);
....

sqlCmd.ExecuteNonQuery();

这样,正确解析值的工作将被传递给框架代码,框架代码更了解如何处理Guid、带引号的字符串、小数、日期等。

Guid上缺少引号,这就是为什么会出现错误。实际上,您应该使用参数化查询来避免sql注入和类似的问题(例如缺少引号)

应该(但不可取)


MemberNo
是什么类型的数据类型?变量MemNo?MemberNo uniqueidentifier,MemNo guiddid是否缺少Guid的引号?
values({0},'{1}',... )  //<-- see the added quotes around the Guid part
values(@id,@guid,... ) //<--
cmd.Parameters.AddWithValue("@id", someValueHere);
cmd.Parameters.AddWithValue("@guid", someGuidValueHere");