开发者社区> 问答> 正文

使用C#方法将数据插入具有设置的列的SQL表中,因为Uniqueidentifier类型失败

最初在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(...)

展开
收起
保持可爱mmm 2019-11-18 11:35:39 589 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载