package test;
import java.sql.*;
import java.io.*;
public class TestText
{
public static void main(String[] args){
if(args.length!=1){
System.out.println(
"Usage:java com.tarena.jdbclab.Lab15 filename");
return;
}
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
int id = 102;
String fname = args[0];
Blob blob = null;
try{
con = JdbcUtil.getConnection();
System.out.println(con);
con.setAutoCommit(false);
InputStream in = new FileInputStream(fname);
byte[] content =
new byte[in.available()];
in.read(content);
in.close();
String t = "szq_test";
String sql =
"insert into "+t+
" values(?,?)";
ps = con.prepareStatement(sql);
ps.setInt(1,id);
ps.setBytes(2, content);
ps.executeUpdate();
System.out.println(con);
con.commit();
}catch(Exception e){
e.printStackTrace();
try{
if(con!=null) con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}finally{
JdbcUtil.release(rs,ps,con);
} }
}
这是读取中文文件的代码存到SYBASE数据库。
package test;import java.io.FileInputStream;
import java.io.InputStream;
import java.io.*;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class Test {
public static void main(String[] args) {
Connection con=null;
Statement st=null;
ResultSet rs=null;
con=JdbcUtil.getConnection();
try {
st=con.createStatement();
String sql="select * from szq_test where id=101";
rs = st.executeQuery(sql);
rs.next();
byte[] b=rs.getBytes("context");
OutputStream out =
new FileOutputStream("d:\\008.doc");
out.write(b);
out.close();
//for(int i=0;i<b.length;i++){
System.out.println(new String(b,"gbk"));
rs.close();
st.close();
con.close();
//}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是从数据库中读大对象到008.doc文件中。。中文出现乱码恳请高手帮忙看一下。。谢谢
import java.sql.*;
import java.io.*;
public class TestText
{
public static void main(String[] args){
if(args.length!=1){
System.out.println(
"Usage:java com.tarena.jdbclab.Lab15 filename");
return;
}
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
int id = 102;
String fname = args[0];
Blob blob = null;
try{
con = JdbcUtil.getConnection();
System.out.println(con);
con.setAutoCommit(false);
InputStream in = new FileInputStream(fname);
byte[] content =
new byte[in.available()];
in.read(content);
in.close();
String t = "szq_test";
String sql =
"insert into "+t+
" values(?,?)";
ps = con.prepareStatement(sql);
ps.setInt(1,id);
ps.setBytes(2, content);
ps.executeUpdate();
System.out.println(con);
con.commit();
}catch(Exception e){
e.printStackTrace();
try{
if(con!=null) con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}finally{
JdbcUtil.release(rs,ps,con);
} }
}
这是读取中文文件的代码存到SYBASE数据库。
package test;import java.io.FileInputStream;
import java.io.InputStream;
import java.io.*;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class Test {
public static void main(String[] args) {
Connection con=null;
Statement st=null;
ResultSet rs=null;
con=JdbcUtil.getConnection();
try {
st=con.createStatement();
String sql="select * from szq_test where id=101";
rs = st.executeQuery(sql);
rs.next();
byte[] b=rs.getBytes("context");
OutputStream out =
new FileOutputStream("d:\\008.doc");
out.write(b);
out.close();
//for(int i=0;i<b.length;i++){
System.out.println(new String(b,"gbk"));
rs.close();
st.close();
con.close();
//}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是从数据库中读大对象到008.doc文件中。。中文出现乱码恳请高手帮忙看一下。。谢谢
出现乱码很正常,你如果读取的是一个文本文件的话一般就不会出乱码了.因此doc格式的文件支持对文字的格式和插入多媒体等复杂排版,而这些东西都是要占文件大小的.所以你按纯文本的方式读取就出错了.
你可以试一下,把一个doc文件中的文字加一些格式.然后把这个文件拉到已经打开的记事本编辑器里,你会发现乱码的出现.
我用TXT文本试了一下,没出现乱码
那我应该怎么读取DOC格式的文本而不出现乱码呢?