微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当使用@@ IDENTITY / scope_identity时,插入2行而不是1行

如何解决当使用@@ IDENTITY / scope_identity时,插入2行而不是1行

|
using (sqlConnection connection = new sqlConnection(ConnectionString))
    {
        string query = \"INSERT INTO SocialGroup (created_by_fbuid) VALUES (@FBUID); SELECT CAST(scope_identity() AS int)\";
        sqlCommand command = new sqlCommand(query,connection);
        command.Parameters.AddWithValue(\"@FBUID\",FBUID);

        connection.open();
        command.ExecuteNonQuery();

        int lastID = (int)command.ExecuteScalar();

    }
没有
SELECT CAST(scope_identity() AS int)
插入一行。但是由于我需要使用scope_identity从创建的行中获取ID。但是,当我使用它时,将创建2行而不是1行。 我错过了什么? 谢谢     

解决方法

您发布的代码中的问题是您运行2次相同的查询...一次使用ExecuteNonQuery();最后一个是(int)command.ExecuteScalar(); 如果您尝试仅使用executeScalar,我想您就会得到想要的结果。... 尝试并希望这会有所帮助... 如果需要,可以像本文中一样使用Parameter检索标识。     ,如果您要使用gbn或我的第一个问题的答案,则不应出现此问题。     ,尝试做
 using (SqlConnection connection = new SqlConnection(ConnectionString))     
    {         
    string query = \"INSERT INTO SocialGroup (created_by_fbuid) VALUES (@FBUID);\";         
    SqlCommand command = new SqlCommand(query,connection);            
    command.Parameters.AddWithValue(\"@FBUID\",FBUID);         
     connection.Open();         
    command.ExecuteNonQuery();
     query = \"SELECT CAST(scope_identity() AS int)\";     
     command = new SqlCommand(query,connection);                   
    int lastID = (int)command.ExecuteScalar();      
    } 
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。