黑马程序员技术交流社区
标题:
为什么读取不到id那列·?
[打印本页]
作者:
CrazyProgram
时间:
2013-4-11 15:19
标题:
为什么读取不到id那列·?
//使用元数据+反射优化CURD操作
public class Demo2 {
public static void main(String[] args) throws SQLException {
String sql = "insert into user(username,password,birthday,salary) values(?,?,?,?)";
Object[] params = {"xixi","00","1999-11-23",9000};
update(sql,params);
}
public static void update(String sql,Object[] params) throws SQLException{
Connection conn = JdbcUtil.getMySqlConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
//取得参数元数据
ParameterMetaData pmd = pstmt.getParameterMetaData();
//取得参数个数
int size = pmd.getParameterCount();
System.out.println(size);
//为什么打印的是4,id那列它不读的吗?这又是为什么呢?
for(int i=0;i<size;i++){
pstmt.setObject(i+1, params[i]);
System.out.println(params[i]);
}
pstmt.executeUpdate();
}
}
复制代码
id那列有的,虽然是自动增长,但是int size = pmd.getParameterCount();读取不到那列!
作者:
熊永标
时间:
2013-4-11 16:01
String sql = "insert into user(username,password,birthday,salary) values(?,?,?,?)";从这可以看出你做预处理的参数只有四个,因此
int size = pmd.getParameterCount();返回的结果个数就为四个,不会包括ID的,这句返回的就是预处理的参数个数
作者:
lyg2013
时间:
2013-4-11 17:33
getParameterCount
int getParameterCount()
throws SQLException
检索 PreparedStatement 对象中的参数的数量,此 ParameterMetaData 对象包含了该对象的信息。
返回:
参数的数量
抛出:
SQLException - 如果发生数据库访问错误
你可以看看这里http://www.cjsdn.net/Doc/JDK50/java/sql/ParameterMetaData.html#getParameterCount%28%29
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2