在C#中,mysql插入一条数据时,怎么同时把这条数据的主键返回?
4个回答
2013-05-17
展开全部
可以尝试使用 last_insert_id() 来获取一下看看。
下面是 仅仅在 mysql 下面的测试例子:
mysql> CREATE TABLE test_create_tab2 (
-> 启迟 id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
mysql> select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)
C# 调用 MySql, 要同时完成 insert ... 与 select last_insert_id()
这个我没有测试过。
C# 调用 SQL Server 的, 我倒是测试过的。
在 C# 中, 可以通过下面的方式, 一次执行2行 SQL 语句, 来完成插入并获取最新ID 的处理逻辑.
培旁滑 /// 需要执行的 SQL 语句
/// 需要注意的是
配腊 /// 这里实际上定义了2条语句
/// 一条是 INSERT
/// 一条是 SELECT SCOPE_IDENTITY()
private const String INSERT_SQL =
@"INSERT INTO test_SCOPE_IDENTITY (val)
VALUES (@val)
SELECT SCOPE_IDENTITY()";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你的sql语句 后面加入 SELECT @@IDENTITY AS returnName;用来获取主键的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以写个存储过程直接实现,如果不写存储过程的话,只能插入后再进行查询了
追问
储存过程怎么写,我用的是navicat for mysql
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询