A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁健1 中级黑马   /  2012-8-6 18:15  /  2036 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

cmd.CommandText="insert into tableName(colName1,colName2) output inserted.Id values('***','***')";
int i=Convert.ToInt32(cmd.ExecuteSalar());
1.执行完这两句话后,输出的是自增字段的当前值,还是当前值减一?
2.第一句中的sql语句要不要执行插入操作?‘***’‘***’这条信息会插入到数据库中吗?
3.如果单纯的想要得到自增字段的当前值,同时又不想在进行插入数据,有这类的方法吗?就是说,仅仅想得到自增字段的值,却不想添加数据?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

正序浏览
自增字段只能设置在整形变量中,这个变量在插入的时候可以忽略
当你插入一个数据之后他就会自动加1
你的sql语句必须执行之后数据库才拥有数据
自增变量不可复制修改 只能读取
如果想查找最大的id
select max(id) from table_name
回复 使用道具 举报
没明白你的意思,是想得到插入当前数据的得到当前数据自增字段,还是想得到下次插入数据时的自增列,如果是第一种的话上边是一种方法,你也可以自己写个存储过程来得到,
create proc abc
@b nchar(50)
as
begin
insert into aa(uname) values(@b)
select max(id) from aa
end

不过如果你想的是第二中的话,有什么意思呢,想不明白你为啥想这么做,理论上应该也是有方法的,不过没有这么简单,

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马