SqlServer使用insert语句后返回主键值

本文介绍了一种在Java中使用PreparedStatement获取数据库自增主键的方法。通过调用getGeneratedKeys方法并在结果集中读取,可以有效地捕获由数据库自动生成的主键值。

int id = -1;//返回的主键值

Result rs = pstmt.getGeneratedKeys;

if(rs.next()){

  id= rs.getInt(1);

}

在 C# 中使用 SQL Server 进行 insert 操作后获取返回结果,可通过以下几种方法实现: ### 使用 `@@IDENTITY` 获取自增主键 若要获取插入记录的自增主键,可在 SQL 语句中添加 `SELECT @@IDENTITY AS returnName;`,示例代码如下: ```csharp public int sqlexecutereader(string sql) { // 打开数据库连接 DBopen(); SqlCommand myComm = new SqlCommand(sql, Connection); int newID = Convert.ToInt32(myComm.ExecuteScalar()); // 关闭数据库连接 DBclose(); return newID; } // 示例 SQL 语句 string sql = "INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;"; int insertedId = sqlexecutereader(sql); ``` 此方法假设主键是 `int` 类型的自动增加列,`DBopen()` 和 `DBclose()` 分别为打开和关闭数据库连接的方法 [^2]。 ### 使用 `SCOPE_IDENTITY()` 获取自增主键 `SCOPE_IDENTITY()` 函数可返回当前作用域内插入的最后一行的自增列的,示例代码如下: ```csharp string sql_ren = "insert into t_checkrecord(列1,列2,...) values(value1,value2,...); SELECT SCOPE_IDENTITY();"; SqlCommand command = new SqlCommand(sql_ren, connection); int newId = Convert.ToInt32(command.ExecuteScalar()); ``` 这里的 `connection` 是 `SqlConnection` 对象 [^3]。 ### 使用 `OUTPUT` 子句返回插入的行数据 `OUTPUT` 子句可在插入操作时返回受影响的行的相关信息,示例代码如下: ```csharp string sql = "INSERT INTO YourTable (Column1, Column2) OUTPUT inserted.* VALUES ('Value1', 'Value2');"; SqlCommand command = new SqlCommand(sql, connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理返回的行数据 string column1Value = reader["Column1"].ToString(); string column2Value = reader["Column2"].ToString(); } reader.Close(); ``` 此代码插入数据到 `YourTable` 表,同时通过 `OUTPUT inserted.*` 返回插入的整行数据 [^1]。 ### 使用 `@@ROWCOUNT` 变量返回受影响的行数 `@@ROWCOUNT` 变量可返回上一个 SQL 语句影响的行数,示例代码如下: ```csharp string sql = "INSERT INTO YourTable (Column1, Column2) VALUES ('Value1', 'Value2'); SELECT @@ROWCOUNT;"; SqlCommand command = new SqlCommand(sql, connection); int rowsAffected = Convert.ToInt32(command.ExecuteScalar()); ``` 此代码插入数据后,用 `@@ROWCOUNT` 变量返回插入操作影响的行数 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值