用oledbcommand向数据库插入一条新纪录,这条记录中的主键是自增长的,怎么才能得到这个自增长字段的值

时间:2021-09-21 21:44:29
用oledbcommand向数据库插入一条新纪录,这条记录中的主键是自增长的,怎么才能得到这个自增长字段的值

9 个解决方案

#1


查询出来就是了啊?
你想得到什么值哦?
说清楚点嘛

#2


如果是自动增加的。
用SELECT MAX(ID)不就可以了吗?

#3


string sqlstr = "insert into user(name) values('sprc_lcl')";
sqlstr +=" select id from user where id=@@IDENTITY";

#4


两句合在一起执行,可取ID值

#5


sqlstr +=" select id from user where id=@@IDENTITY";这句话是什么意思

#6


什么意思  LZ 要的是自动获取记录行数值吧
 create sequence 字段名;

#7


select id from user where id=@@IDENTITY 
id就是你自增的那个字段,@@IDENTITY就是你插入的那条记录系统给你的ID值(这个不用管它)这么写就是了

#8


因为这个主键是自增长的,我在插入这条记录之前不知道它的值,但是在插入这条记录之后想得到这个值

#9


以Access数据库为例,回填实现如下:
注册DataAdapter.RowUpdated事件。
da.RowUpdated += new OleDbRowUpdatedEventHandler(da_RowUpdated);
事件处理程序,
private static void da_RowUpdated(object sender, OleDbRowUpdatedEventArgs e)
{
if(e.Status == UpdateStatus.Continue && e.StatementType = StatementType.Insert)
{
OleDbConnection conn = new OleDbConnection("连接字符串");
OleDbCommand comm = new OleDbCommand("SELECT @@IDENTITY",conn);
conn.Open();
e.Row["id"] = (int)comm.ExecuteScalar();//得到最新递增值更新到内存DataTable中刚更新的DataRow.
e.Row.AcceptChanges();
conn.Close();
}
}

#1


查询出来就是了啊?
你想得到什么值哦?
说清楚点嘛

#2


如果是自动增加的。
用SELECT MAX(ID)不就可以了吗?

#3


string sqlstr = "insert into user(name) values('sprc_lcl')";
sqlstr +=" select id from user where id=@@IDENTITY";

#4


两句合在一起执行,可取ID值

#5


sqlstr +=" select id from user where id=@@IDENTITY";这句话是什么意思

#6


什么意思  LZ 要的是自动获取记录行数值吧
 create sequence 字段名;

#7


select id from user where id=@@IDENTITY 
id就是你自增的那个字段,@@IDENTITY就是你插入的那条记录系统给你的ID值(这个不用管它)这么写就是了

#8


因为这个主键是自增长的,我在插入这条记录之前不知道它的值,但是在插入这条记录之后想得到这个值

#9


以Access数据库为例,回填实现如下:
注册DataAdapter.RowUpdated事件。
da.RowUpdated += new OleDbRowUpdatedEventHandler(da_RowUpdated);
事件处理程序,
private static void da_RowUpdated(object sender, OleDbRowUpdatedEventArgs e)
{
if(e.Status == UpdateStatus.Continue && e.StatementType = StatementType.Insert)
{
OleDbConnection conn = new OleDbConnection("连接字符串");
OleDbCommand comm = new OleDbCommand("SELECT @@IDENTITY",conn);
conn.Open();
e.Row["id"] = (int)comm.ExecuteScalar();//得到最新递增值更新到内存DataTable中刚更新的DataRow.
e.Row.AcceptChanges();
conn.Close();
}
}