sqlserver可以用:insert into book(xxx,xxx) values(?,?) select @@identitymysql我查了说是用,SELECT LAST_INSERT_ID(),那为什么我
insert into book(xxx,xxx) values(?,?)SELECTLAST_INSERT_ID() 报错呢?要是分2部那怎么得到SELECTLAST_INSERT_ID()的值呢?代码如下:
//添加图书
public boolean badd(Book book, bookdownload bd) {
boolean flag=false;
conn=new ConnectDB().getConn();
String sql="insert into book(book_name,book_value,book_author,book_photo,book_unit,book_time,book_bigclass,book_smallclass,book_abstract) values(?,?,?,?,?,?,?,?,?)";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, book.getBook_name());
pstmt.setFloat(2, book.getBook_value());
pstmt.setString(3, book.getBook_author());
pstmt.setString(4, book.getBook_photo());
pstmt.setString(5, book.getBook_unit());
pstmt.setString(6, book.getBook_time());
pstmt.setInt(7, book.getBook_bigclass());
pstmt.setInt(8, book.getBook_smallclass());
pstmt.setString(9, book.getBook_abstract());
int i=pstmt.executeUpdate();
if(i>0){
String sql1="SELECT LAST_INSERT_ID()";
pstmt=conn.prepareStatement(sql1);
rs=pstmt.executeQuery();
if(rs.next()){
String sql2="insert into bookdownload(book_id,filsize,address,port) VALUES("+ SELECT LAST_INSERT_ID()找出来的值 +",20,?,1)";
pstmt=conn.prepareStatement(sql2);
//pstmt.setString(1, bd.getFilsize());
pstmt.setString(1, bd.getAddress());
int count=pstmt.executeUpdate();
if(count>0){
return true;
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if( pstmt != null )
pstmt.close();
if( conn != null )
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
怎么才能得到SELECTLAST_INSERT_ID()的值
insert into book(xxx,xxx) values(?,?)SELECTLAST_INSERT_ID() 报错呢?要是分2部那怎么得到SELECTLAST_INSERT_ID()的值呢?代码如下:
//添加图书
public boolean badd(Book book, bookdownload bd) {
boolean flag=false;
conn=new ConnectDB().getConn();
String sql="insert into book(book_name,book_value,book_author,book_photo,book_unit,book_time,book_bigclass,book_smallclass,book_abstract) values(?,?,?,?,?,?,?,?,?)";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, book.getBook_name());
pstmt.setFloat(2, book.getBook_value());
pstmt.setString(3, book.getBook_author());
pstmt.setString(4, book.getBook_photo());
pstmt.setString(5, book.getBook_unit());
pstmt.setString(6, book.getBook_time());
pstmt.setInt(7, book.getBook_bigclass());
pstmt.setInt(8, book.getBook_smallclass());
pstmt.setString(9, book.getBook_abstract());
int i=pstmt.executeUpdate();
if(i>0){
String sql1="SELECT LAST_INSERT_ID()";
pstmt=conn.prepareStatement(sql1);
rs=pstmt.executeQuery();
if(rs.next()){
String sql2="insert into bookdownload(book_id,filsize,address,port) VALUES("+ SELECT LAST_INSERT_ID()找出来的值 +",20,?,1)";
pstmt=conn.prepareStatement(sql2);
//pstmt.setString(1, bd.getFilsize());
pstmt.setString(1, bd.getAddress());
int count=pstmt.executeUpdate();
if(count>0){
return true;
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if( pstmt != null )
pstmt.close();
if( conn != null )
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
怎么才能得到SELECTLAST_INSERT_ID()的值
解决方案 »
- 有关新浪微博页面的问题
- struts2 result type=plainText 有异常
- 问一个css 的clear
- sitemesh框架问题
- EJB @Stateless 报错
- 怎样在java中连接到windows mobile的数据库?
- 请高手指点:我的工程硕士论文开题报告已经被导师拒了3次了,不行就要废了,谁能帮我修改一下,在线给分
- 请教:scope= "page "与scope= "request "有什么区别
- 我要晕倒了,怎么在java.sun.com/products/servlet下找不到servlet的开发包在哪下载,1个小时都浪费了,帮忙啦*_*
- 我的Jbuilder安装的时候附带安装的tomcat,密码是什么?
- jsp中JSTL问题
- 多线程join有点不明白,求教
Query OK, 1 row affected (0.00 sec)mysql> insert into USER_Table (name) values('userB');
Query OK, 1 row affected (0.00 sec)mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)然后在另一终端,用户B 的操作:
mysql> insert into USER_Table (name) values('peter');
Query OK, 1 row affected (0.00 sec)mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 3 |
+------------------+
1 row in set (0.00 sec)此时,用户A 再一次执行
mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)
用户A取得到的last_insert_id 还是2。可见last_insert_id只能取得针对当前操作的id而且只有在执行更新操作之后,才可以使用last_insert_id()来取id,不知道我说的明白么
如果是10001,10002之类的可select max(id) from table
如果是book10001,book10002,截取一下后,跟上面一样操作...