如何获取要插入的行的ID(新)

阿克巴·法泽利(Akbar Fazeli)

我有一个利用SQL Server数据库的C#应用​​程序。插入一行后,我需要ID创建的行的。我试过了select max(id) from mytable,但是如果其他用户同时插入一行,则此结果不正确。

这是我的代码:

public string ConnectionString = @"Data Source=.;Initial Catalog=n_hesabdata;Integrated Security=True";

public void ExecuteNonQuery(string CommandText)   
{      
    try {     
      connection.ConnectionString = ConnectionString;  
      connection.Open();  
      command.CommandText = CommandText;  
      command.Connection = connection;   
      command.ExecuteNonQuery();        
      command.Dispose();   
      connection.Close();    
    } catch (Exception error) {
      connection.Close();  
    }  
}

ExecuteNonQuery("insert into Orders (Ctm_phone, Ctm_FullName) VALUES (" + Ctm_phone.text + ", N'" + Ctm_name.Text + "')");

我如何获得ID新插入的行?

史蒂夫

您应该将代码更改为以下内容

ConnectionString = @"Data Source=.;Initial Catalog=n_hesabdata;Integrated Security=True";
public int ExecuteInsertWithIdentity(string CommandText, List<SqlParameter> prms)   
{      
    using(SqlConnection connection = new SqlConnection(ConnectionString))
    using(SqlCommand cmd = new SqlCommand(CommandText + 
                              ";SELECT SCOPE_IDENTITY();", connection))  
    {  
       connection.Open();
       if(prms != null && prms.Count > 0)
           cmd.Parameters.AddRange(prms.ToArray());
        int lastID = Convert.ToInt32(cmd.ExecuteScalar());        
        return lastID;
    }
}
....

List<SqlParameter> prms = new List<SqlParameter>();  
SqlParameter p1 = new SqlParameter() {ParameterName = "@phone", 
                                      SqlDbType = SqlDbType.NVarChar,
                                      Value = Ctm_phone.text};
SqlParameter p2 = new SqlParameter() {ParameterName = "@Name", 
                                      SqlDbType = SqlDbType.NVarChar,
                                      Value = Ctm_name.Text};
prms.AddRange(new SqlParameter[] {p1, p2});
int lastOrderID = ExecuteInsertWithIdentity(@"insert into Orders  
                                            (Ctm_phone,Ctm_FullName) 
                                            VALUES (@phone, @name)", prms);

这样,执行查询的代码需要值的参数集合。这消除了SQL注入的可能性。现在,只需将SELECT SCOPE_IDENTITY()追加到命令中,即可解决找回数据库引擎在Orders表中插入的最后一个ID的问题SqlClient SqlCommand类能够在单次访问数据库的情况下执行多个语句,并返回最后一条语句。在这种情况下,该行的IDENTITY列的值是从您的连接(而不是从其他连接)添加到您的Orders表中的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL:获取新插入的行的ID

来自分类Dev

是否可以*在语句*中获取要插入的行的ID?

来自分类Dev

如何获取从PG :: Result插入的行的ID

来自分类Dev

如何获取最后插入的行的ID

来自分类Dev

获取超过 1 个 id 到新插入的行

来自分类Dev

如何获取旧的ID并插入新的文本字段

来自分类Dev

如何从要插入新表的一列中获取和分离结果

来自分类Dev

MySQL查询-获取未插入的ID以向表中插入新行

来自分类Dev

如何获取插入的最后一行的id(自动递增)

来自分类Dev

如何从PhoneGap Android中的SQLite获取最后插入的行ID

来自分类Dev

如何获取在C#中插入的行的ID

来自分类Dev

如何从PhoneGap Android中的SQLite获取最后插入的行ID

来自分类Dev

在CFScript中获取新插入的记录ID

来自分类Dev

在CFScript中获取新插入的记录ID

来自分类Dev

插入重复更新,获取“新”生成的ID

来自分类Dev

如何获取插入记录的ID?

来自分类Dev

如何获取“ waitForQualityGate()”要检查的任务ID?

来自分类Dev

如何获取要更新的日期的ID

来自分类Dev

从插入的行中获取 ID,以便使用新值更新表

来自分类Dev

在每个重复的ID之前插入新行

来自分类Dev

如何知道upsert是否成功以及是否可以获取_id更新/新插入的文档

来自分类Dev

将数据插入表中以获取SQLite后如何获取最后一行ID

来自分类Dev

如何在插入后不插入相关数据的情况下获取插入的行ID和相关数据

来自分类Dev

获取插入的行cassandra .Net的ID

来自分类Dev

插入无值的行以获取生成的ID

来自分类Dev

获取最后插入的行ID(HFSQL)

来自分类Dev

插入无值的行以获取生成的ID

来自分类Dev

PostgreSQL函数:获取更新或插入的行的ID

来自分类Dev

插入新行并获取主键或获取现有记录的主键

Related 相关文章

  1. 1

    SQL:获取新插入的行的ID

  2. 2

    是否可以*在语句*中获取要插入的行的ID?

  3. 3

    如何获取从PG :: Result插入的行的ID

  4. 4

    如何获取最后插入的行的ID

  5. 5

    获取超过 1 个 id 到新插入的行

  6. 6

    如何获取旧的ID并插入新的文本字段

  7. 7

    如何从要插入新表的一列中获取和分离结果

  8. 8

    MySQL查询-获取未插入的ID以向表中插入新行

  9. 9

    如何获取插入的最后一行的id(自动递增)

  10. 10

    如何从PhoneGap Android中的SQLite获取最后插入的行ID

  11. 11

    如何获取在C#中插入的行的ID

  12. 12

    如何从PhoneGap Android中的SQLite获取最后插入的行ID

  13. 13

    在CFScript中获取新插入的记录ID

  14. 14

    在CFScript中获取新插入的记录ID

  15. 15

    插入重复更新,获取“新”生成的ID

  16. 16

    如何获取插入记录的ID?

  17. 17

    如何获取“ waitForQualityGate()”要检查的任务ID?

  18. 18

    如何获取要更新的日期的ID

  19. 19

    从插入的行中获取 ID,以便使用新值更新表

  20. 20

    在每个重复的ID之前插入新行

  21. 21

    如何知道upsert是否成功以及是否可以获取_id更新/新插入的文档

  22. 22

    将数据插入表中以获取SQLite后如何获取最后一行ID

  23. 23

    如何在插入后不插入相关数据的情况下获取插入的行ID和相关数据

  24. 24

    获取插入的行cassandra .Net的ID

  25. 25

    插入无值的行以获取生成的ID

  26. 26

    获取最后插入的行ID(HFSQL)

  27. 27

    插入无值的行以获取生成的ID

  28. 28

    PostgreSQL函数:获取更新或插入的行的ID

  29. 29

    插入新行并获取主键或获取现有记录的主键

热门标签

归档