JAVA 数据库编程(2)
预备语句
PrepareStatement(String sql)
返回一个含预编译语句的PrepareStatement对象,字符串SQL代表了一个SQL语句,该语句可以包含一个或多个由?字符指明的参数占位符。
Java.sql.PrepareStatement包含方法
void setXxx(int n,Xxx x) //设置第n个参数值为x
void clearParameter()//清除预备语句在的所有当前参数
ResultSet executeQuery()//执行预备SQL查询,并返回一个ResultSet对象
int executeUpdate()//返回影响行数。
读写LOB
除了数据、字符串和日期之外,许多数据库都可以存储大对象,如图片或其他数据。在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB。
要从Blob中获取二进制数据,可以调用getByte或getInputStream.
Clob中获取字符数据,可以通过调用getSubString 或getCharacterStream
//读取 PreparedStatement stat=conn.prepareStatement("select Cover from BookCovers where ISBN=?"); stat.set(1,isbn); ResultSet result=stat.executeQuery(); while(result.next()) { Blob coverBlob=result.getBlob(1); Image coverImage=ImageIO.read(coverBlob.getBinaryStream()); } //写入 Blob coverBlob=connection.createBlob(); int offset=0; OutputStream out=coverBlob.setBinaryStream(offset); ImageIO.write(coverImage,"PNG",out); PreparedStatement stat=conn.preparedStatement("insert into Cover value (?,?)"); stat.set(1,isbn); stat.set(2,coverBlob); stat.executeUpdate();