1.获取插入主键
public int register(String username, String password, String email) throws Exception {
Connection connection = DbUtil.getCon();
String sql="insert into user (username,password,email) values (?,?,?) ";
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, username);
ps.setString(2, password);
ps.setString(3, email);
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
//返回的结果集中包含主键,注意:主键还可以是UUID,
//复合主键等,所以这里不是直接返回一个整型
int uid = -1;
if(rs.next()){
uid = rs.getInt(1);
}
return uid;
}
2. 批量插入
try {
connection = dbUtil.getCon();
String sql = " select * from user where uid = ? ";
ps = connection.prepareStatement(sql);
for(int i = 0; i < uidList.size(); i++ ){
ps.setInt(1,uidList.get(i));
ResultSet resultSet = ps.executeQuery();
//Before start of result set
//ResultSet对象代表SQL语句执行的结果集,维护指向其当前数据行的光标。每调用一次next()方法,光标向下移动一行。
// 最初它位于第一行之前,因此第一次调用next()应把光标置于第一行上,使它成为当前行。随着每次调用next()将导致光标向下移动一行。
// 在ResultSe对象及其t父辈Statement对象关闭之前,光标一直保持有效。
if(resultSet.next()){
int uid = resultSet.getInt("uid");
String userName = resultSet.getString("username");
String password = resultSet.getString("password");
String email = resultSet.getString("email");
User u = new User();
u.setUid(uid);
u.setUserName(userName);
u.setPassWord(password);
u.setEmail(email);
list.add(u);
}
}
} catch ( Exception e ){
e.printStackTrace();
}
3.resultset 获取日期
- 使用getDate来获取,则是只有日期没有时间的
- 使用getTimestamp来获取时分秒
Date date = resultSet.getTimestamp("date");//getDate()只能年月日