最初在Sql下面的命令中进行INSERT INTO UserActivationDB (UserId, ActivationCode) VALUES (3,NEWID())了完美测试,然后 尝试调整a C# method以规避Exception。
private void Checkmail(int userId) { string constr = ConfigurationManager.ConnectionStrings["RegisterDB"].ConnectionString; string activationCode = Guid.NewGuid().ToString(); using (SqlConnection con = new SqlConnection(constr)) { //using (SqlCommand cmd = new SqlCommand("INSERT INTO UserActivationDB VALUES(@UserId, @ActivationCode)")) using (SqlCommand cmd = new SqlCommand("SET IDENTITY_INSERT UserActivationDB ON INSERT INTO UserActivationDB VALUES(@UserId, NEWID()) SET IDENTITY_INSERT UserActivationDB OFF")) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@UserId", userId); //cmd.Parameters.AddWithValue("@ActivationCode", activationCode); cmd.Connection = con; con.Open(); cmd.ExecuteNonQuery(); con.Close(); } } } }```
Error message
HResult=0x80131904
Message=An explicit value for the identity column in table UserActivationDB can only be specified when a column list is used and IDENTITY_INSERT is ON.
Source=.Net SqlClient Data Provider
StackTrace:
<Cannot evaluate the exception stack trace>
附注:由于我一直坚持保持activationCode原样string并将其插入表中的uniqueidentifier类型UserActivationDB(仅2列)中,因此我对其进行了评论并用它替代,NEWID()但在仍然遇到类似的问题cmd.ExecuteNonQuery();
因此,非常cmd = new SqlCommand(...)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。