您的位置:首页 > 数据库

使用JDBC获取数据库自动生成的主键

2011-11-17 21:00 651 查看
 
使用JDBC获取数据库自动生成的主键:

注:此参数仅对insert操作有效

在数据库中生成users表:

create table users(

id int primary key auto_increment,

name varchar(40),

password varchar(40),

email varchar(60),

birthday date

)

向该表中插入一行记录,然后得到自动增长的id的实现:

Connection con = null;
       PreparedStatement st = null;
       ResultSet rs = null;
       try {        
           //获取连接
           con = DBManager.getConnection();
           String sql="insert into users(name,password) value(?,?)";
           st = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
 
           st.setString(1,"Jerry");
           st.setString(2,"QAZ");
          
           st.executeUpdate();
          
           rs=st.getGeneratedKeys();//结果集单行单列的
           if(rs.next()){
              System.out.println(rs.getObject(1));
           }
          
           DBManager.release(con, st, rs);
       } catch (SQLException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }

 

MySql数据库的处理连接:

public class DBManager {
   
    private static String username;
    private static String password;
    private static String url;
    private static String driver;
   
    static{
       try{
           InputStream in = DBManager.class.getClassLoader().getResourceAsStream("db.properties");
           Properties prop = new Properties();
           prop.load(in);
          
           driver = prop.getProperty("driverClassName");
           url = prop.getProperty("url");
          
           username = prop.getProperty("username");
           password = prop.getProperty("password");
          
           Class.forName(driver);
          
       }catch (Exception e) {
           throw new ExceptionInInitializerError(e);
       }
    }
   
   
    public static Connection getConnection()
throws
SQLException{
       return DriverManager.getConnection(url,
username, password);
    }
   
   
    public static void release(Connection conn,Statement st,ResultSet rs){
      
       if(rs!=null){
           try{
              rs.close();
           }catch (Exception e) {e.printStackTrace();}
            rs = null;
       }
       if(st!=null){
           try{
              st.close();
           }catch (Exception e) {e.printStackTrace();}
           st = null;
       }
       if(conn!=null){
           try{
              conn.close();
           }catch (Exception e) {e.printStackTrace();}
           conn = null;
       }
      
    }
   
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息