JDBC中关于如何获得主键、处理二进制文件、使用元数据
来源:互联网 发布:户外爬山软件 编辑:程序博客网 时间:2024/06/03 23:07
如何获得主键: 在数据库中,当我们设计表时常常会将不含有实际意义的主键设置为自增长,我们往这个表中插入数据的时候,数据库会我们自动分配一个主键,当我们往这个表的子表中插入数据时,会用到原表的主键,而我们并不知道主键是多少,如当我们设计账户表时,会将账户表中的账户id设置为主键,并将它设置为自增长,当我们往账户表的从表用户表中插入数据时,就需要用到账户表中的账户id。下面我讲述的便是如何获得数据库自动生成的主键。
conn=DriverManager.getConnection(url,"root","root"); //使用prepareStatement(sql,int)方法,将int的值设为RETURN_GENERATED_KEYS,表示返回新插入语句中自动增长的主键值 ps1=conn.prepareStatement("insert into account values(null,5000)", Statement.RETURN_GENERATED_KEYS); ps1.execute(); //获得主键结果集 ResultSet rs=ps1.getGeneratedKeys(); rs.next(); System.out.println(rs.getInt(1)); ps2=conn.prepareStatement("insert into users values(null,?,?)"); ps2.setInt(1, rs.getInt(1)); ps2.setString(2, "hsy"); ps2.execute();
当我们创建PreparedStatement时,调用含有两个参数的preparedStatement(sql,int)方法,将int的值设为RETURN_GENERATED_KEYS,表示返回新插入语句中自动增长的主键值,再调用PreparedStatement.getGeneratedKeys()便能获得主键值的结果集。
处理二进制文件:存储二进制文件的步骤1、创建blob 2、向blob中写入数据 3、将blob写到数据库中。
conn=DriverManager.getConnection(url,"root","root"); ps1=conn.prepareStatement("insert into bookinfo values(null,?,?,?)"); ps1.setString(1, "斗破苍穹"); ps1.setString(2, "青年文学出版社"); //创建blob Blob pic=conn.createBlob(); //向blob中写入字节 OutputStream os=pic.setBinaryStream(1); fis=new FileInputStream("D:/1.jpg"); byte[] b=new byte[fis.available()]; fis.read(b); os.write(b); //将blob写到数据库中 ps1.setBlob(3, pic); ps1.execute();
Blob.setBinaryStream(pos)中的参数pos表示的是从这个流的哪个位置开始写,起始位置为1。当我们用Blob.setBinaryStream(pos)方法创建出一个输出流后,我们操作这个流,其实就是操作Blob。
读取二进制文件的步骤1、获得blob的字节流(Blob.pic.getBinaryStream()) 2、将Blob中的字节写到字节数组中 3、将字节数组中的数据写到文件中。
元数据的应用:元数据就是描述数据的数据。当我们在执行sql语句时,也许我们并不知道列的名称,列的数量,列的类型,我们便不能写出相应的sql语句,这时我们便需要用到元数据,如何获得一个sql中所涉及的元数据,我们需要用到ResultSetMetaData接口,这个接口是用来储存记录集的元数据,用ResultSet.getMetaData()来获得。
conn=DriverManager.getConnection(url,"root","root"); ps1=conn.prepareStatement("select * from student"); ResultSet rs=ps1.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); //得到列的数量 int count=rsmd.getColumnCount(); System.out.println(count); //得到列的数据类型 for(int i=1;i<=count;i++){ System.out.println(rsmd.getColumnTypeName(i)); } //得到列的名称 for(int i=1;i<=count;i++){ System.out.println(rsmd.getColumnLabel(i)); }
在获得列名时,可以使用ResultSetMetaData.getColumnType(column)和ResultSetMetaData.getColumnName(column)这两个方法,其区别就是前者是获得别名,后者是获得原始名,在实际应用中我们常使用前者,因为如果使用获得原始名的方法就是使得你sql语句中设置别名变得没有任何意义。
阅读全文
1 0
- JDBC中关于如何获得主键、处理二进制文件、使用元数据
- JDBC—元数据和二进制文件的处理
- 关于如何获得数据库插入操作中数据的自增长主键的值
- JDBC 如何获得自动生成的主键
- JDBC:元数据 && 获取插入记录的主键值 && _JDBC_处理 Blob
- JDBC_通过JDBC获得的元数据
- 如何使用JDBC快速处理大数据
- JDBC中如何通过结果集获取元数据
- JDBC数据集获得及处理
- JDBC中插入数据同时得到主键
- 如何在asp.net中更新数据时获得当前行主键?
- 使用 元数据简化JDBC代码
- 使用元数据简化jdbc代码
- 使用元数据简化jdbc代码
- 使用元数据简化jdbc代码
- Spring JDBC 如何获得和生成主键+Spring JDBC对行集的支持
- 如何处理二进制文件
- MyBatis插入数据后如何获得主键值
- 豪掷160亿美元,私募股权公司KKR拟收购东芝芯片部门
- 罗永浩:除非天灾人祸,锤子今年一定盈利
- 传带触控屏的亚马逊Echo六月开售,售价230美元
- 继亚马逊Echo、Google Home之后,微软也坐不住了
- 坚果Pro大曝光:搭载骁龙626,售价1099元起
- JDBC中关于如何获得主键、处理二进制文件、使用元数据
- 微软今晚Build 2017大会,哪些看点值得关注?| Build 2017
- 苹果收购芬兰睡眠监测设备商Beddit,除了数据还要什么?
- G
- eclipse_切换console显示
- 机械革命X6Ti-S笔记本如何bios设置u盘启动?
- 数组元素循环右移问题
- Win 10将加入HomeHub功能,微软要做智能家庭中枢的第四极?
- GPU就是人工智能的未来,核弹教主给这3家初创公司点了赞 | GTC 2017