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();
原文地址:https://www.cnblogs.com/zhuangjb/p/3123045.html