在做项目的时候发现SQLsever和mysql有很多不一样的地方。其中有一条是SQLsever不支持getInsertObjectIDs(sql)方法。这样如果插入一条数据并且返回标识列就是一个很大的问题。
//mysql插入一条数据返回标识列
public int insert(Studio stu) {
try {
String sql = "insert into studio(studio_name, studio_row_count, studio_col_count, studio_introduction )"
+ " values('"
+ stu.getName()
+ "', "
+ stu.getRowCount()
+ ", " + stu.getColCount()
+ ", '" + stu.getIntroduction()
+ "' )";
DBUtil db = new DBUtil();
ResultSet rst = db.getInsertObjectIDs(sql);
if (rst!=null && rst.first()) {
stu.setID(rst.getInt(1));
return 1;
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
后来想到了一个曲线救国的办法 ,我们可以先插入进去,然后按照刚才插进去的信息查询一次,返回标识列。但是这个问题在于,在java高并发的情况下,数据有肯能是一致的,毕竟只有主键是唯一标识。
后来发现完全可以查表里面的最大标识列,这样不