关于setCharacterStream和setAsciiStream,求解答。

逸花城 2016-09-20 07:01:23
setCharacterStream一切正常:
import java.sql.*;
import java.io.*;
public class ClobDemo
{
public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
public static final String DBURL = "jdbc:oracle:oci:@zqmpc_orcl";
public static final String DBUSER = "mark";
public static final String DBPASS = "markadmin";
public static void main(String[] args) throws Exception{
Connection conn = null;
PreparedStatement pstmt = null;
String title = "天龙八部";
String author = "金庸";
File f = new File("f:"+File.separator+"documents"+File.separator+"金庸全集"+File.separator+"天龙八部.txt");
Reader content = new FileReader(f);
String sql = "insert into myclob(title,author,content) values(?,?,?)";
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,title);
pstmt.setString(2,author);
pstmt.setCharacterStream(3,content);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
};

如果用setAsciiStream的话,MySQL直接抛异常写不进,Oracle能写进但却是乱码:
import java.sql.*;
import java.io.*;
public class ClobDemo
{
public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
public static final String DBURL = "jdbc:oracle:oci:@zqmpc_orcl";
public static final String DBUSER = "mark";
public static final String DBPASS = "markadmin";
public static void main(String[] args) throws Exception{
Connection conn = null;
PreparedStatement pstmt = null;
String title = "天龙八部";
String author = "金庸";
File f = new File("f:"+File.separator+"documents"+File.separator+"金庸全集"+File.separator+"天龙八部.txt");
InputStream content = new FileInputStream(f);
String sql = "insert into myclob(title,author,content) values(?,?,?)";
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,title);
pstmt.setString(2,author);
pstmt.setAsciiStream(3,content,f.length());
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
};

如果另存为UTF-8却又能正常写进了:
...全文
456 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧