zoukankan      html  css  js  c++  java
  • JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值

    微笑注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接:

    package c_increment;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import util.JdbcUtil;
    
    /**
     * 
     * 在JDBC中如何获得表中的,自增长的字段值。
     * 
     * 此例:
     * 		建立在employee和dept表上;
     * 
     * -- 插入数据
     *	INSERT INTO dept(NAME) VALUES('软件开发部');
     *	-- 同时再插入员工
     *	INSERT INTO employee(NAME,deptId) VALUES('张三',1);
     *	-- 如果是java程序插入部门和员工的时候
     *	-- 先插入部门的时候,如何知道自增长的值?	
     *	-- 再插入员工的时候,需要自增长产生的部门id!
     * 
     * @author mzy
     *
     */
    public class Demo01 {
    
    	public static void main(String[] args) {
    		Connection conn = null;
    		PreparedStatement stmt = null;
    		ResultSet rs = null;
    		
    		
    		try {
    			conn = JdbcUtil.getConnection();
    			/**
    			 * 同时插入一个部门和该部门的员工的数据
    			 */
    			String deptSql = "insert into dept(name) values(?)";
    			String empSql = "insert into employee(name,deptId) values(?,?)";
    			/**
    			 * 如果获取自增长的生成的值?
    			 * 1)设置是否可以返回自增长的值 
    			 *    RETURN_GENERATED_KEYS: 可以返回自增长生成值
    			 *    NO_GENERATED_KEYS:不能返回自增长的值
    			 */
    			stmt = conn.prepareStatement(deptSql, Statement.RETURN_GENERATED_KEYS);
    			//参数赋值
    			stmt.setString(1, "软件维护部");
    			//执行插入部门的sql
    			stmt.executeUpdate();
    			
    			/**
    			 * 2)获取自增长的值
    			 *    注意: 该ResultSet只包含了自增长的字段
    			 *    
    			 *    为什么是1呢?
    			 *    		因为一个表中可以有多个自增长的字段;
    			 *    		获得对应的自增长的属性,获取第几个就填几
    			 */
    			rs = stmt.getGeneratedKeys();
    			int deptId = 0;
    			if(rs.next()){
    				deptId = rs.getInt(1);
    			} // 当然还可以通过先插,再查的方式,但是比起这种过于繁琐
    			
    			// 为什么没关闭,传入参数不相同?导致对象的不同?
    			stmt = conn.prepareStatement(empSql);
    			stmt.setString(1, "李四");
    			stmt.setInt(2, deptId);
    			
    			//执行插入员工的sql
    			stmt.executeUpdate();
    			System.out.println("添加成功");
    			
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			
    			JdbcUtil.close(rs, stmt, conn);
    		}
    	}
    }
    
  • 相关阅读:
    as2 loadvars
    Playing with Content-Type – XXE on JSON Endpoints
    Hostile Subdomain Takeover using HerokuGithubDesk + more
    XSS for domain takeover
    XSS via XML POST
    dns 查询中的ANY类型
    crossDomain、allowDomain()、allowScriptAccess三者的关系
    ReadingWriting files with MSSQL's OPENROWSET
    Github html文件在线预览方法
    boostrap莫泰对话框宽度调整
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053473.html
Copyright © 2011-2022 走看看