A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CrazyProgram 中级黑马   /  2013-4-11 15:22  /  853 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void main(String[] args) throws SQLException {
  2.                
  3.                 String sql = "insert into user(username,password,birthday,salary) values(?,?,?,?)";
  4.                 Object[] params = {"xixi","00","1999-11-23",9000};
  5.                 update(sql,params);
  6.         }
  7.        
  8.         public static void update(String sql,Object[] params) throws SQLException{
  9.                 Connection conn = JdbcUtil.getMySqlConnection();
  10.                 PreparedStatement pstmt = conn.prepareStatement(sql);
  11.                 //取得参数元数据
  12.                 ParameterMetaData pmd = pstmt.getParameterMetaData();
  13.                 //取得参数个数
  14.                 int size = pmd.getParameterCount();
  15.                 System.out.println(size);
  16.                 //为什么打印的是4,id那列它不读的吗?这又是为什么呢?
  17.                 for(int i=0;i<size;i++){
  18.                         pstmt.setObject(i+1, params[i]);
  19.                         System.out.println(params[i]);
  20.                 }
  21.                 pstmt.executeUpdate();
  22.         }
复制代码
为什么id那列读取不到,Id那列设的是自动增长的··?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
String sql = "insert into user(username,password,birthday,salary) values(?,?,?,?)";
  你的sql语句只是插入了username,password,birthday,salary;  没有id   那怎么读取呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
PreparedStatement pstmt = conn.prepareStatement(sql);
预编译你的sql语句。你只传递了四个参数。id是数据库本身给你加上去的。和你写的程序无关

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马