永发信息网

向mysql插入一个longtext对象,文件大小为968B,插进去却是933B?

答案:2  悬赏:0  手机版
解决时间 2021-01-24 01:54
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.Reader;
import java.sql.*;

public class WriteMySQL {
public static void main(String[] args){
// LongBlob
// create table test(b longblob,t longtext);
ConnFactory conn = null;//ConnFactory是一个连接数据库的工厂类
Connection con = null;
PreparedStatement ps = null;
String sql = "insert into test values(?,?)";
try{
conn = ConnFactory.newInstance();
con = conn.getConnection("mysql");
ps = con.prepareStatement(sql);
File file = new File("E:\\图片\\3.jpg");
InputStream is = new FileInputStream(file);
int len = (int)file.length();
ps.setBinaryStream(1,is,len);
File file2 = new File("E:\\学习\\Test.java");
Reader reader = new FileReader(file2);
int len2 = (int)file2.length();System.out.println(len2);
ps.setCharacterStream(2,reader,len2);
ps.executeUpdate();
reader.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}finally{
conn.close(con,ps,null);
}
}
}

图片那个没问题,文本的那个每次都会少几行

不传长度的那个方法好像没实现!

我试了一下
确实是因为有汉字,为什么汉字不行呢???
最佳答案
可以试下以下俩种:
1.setCharacterStream(int parameterIndex,
Reader reader)
不传长度
2.用setNCharacterStream此方法,
可能你数据库中的字符集和你文件的字符集不一致导致的问题。
你看纯英文时也会有上述问题么?

因为字符集不同时一个中文所占的长度就不同。
GBK时中文占2个UTF-8时一个中文占3个字节。所以你用第二种方法试试看看,它会帮你转码。
全部回答
gbk就错了,应该用utf8才对。 不过你数据库要和程序统一。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
馨雅阁养生会所地址有知道的么?有点事想过去
如图所示,窗外远处的景物通过小孔在薄膜上所
魔鬼英文怎么说
狗生完孩子护理问题
圣泽中医治疗养生馆地址在什么地方,我要处理
安卓怎么快速下载79bobo
佳洁士牙贴贴着睡着了吞掉了
解答题在古代希腊.罗马文明之后,基督教会对
付氏正骨地址在什么地方,想过去办事
牛泉金鑫加油站在哪里啊,我有事要去这个地方
三菱欧蓝德与丰田汉兰达福特路撼者哪个好
单选题1995年,纽约《世界日报》为《毛泽东诗
单选题黄宗羲的“天下为主,君为客”,与孟子
中医经络养生馆地址好找么,我有些事要过去
金鹰卡通频道演过什么动漫电影
推荐资讯
音频设备删了怎么办
女生的下体长一些不痛不痒的小豆豆是什么原因
People there now have no to safe drinking
when l first arrived on this island 八年级
515汽车服务俱乐部地址有知道的么?有点事想
晋江人不娶外地媳妇
女同事叫男人把杯子打开什么意思啊??
海丰县农业局地址在什么地方,我要处理点事
贵州罗锅沾水怎么做
唐朝二品官袍是什么色的?
278除以2竖式计算
上句 健康舒适睡眠来自澳舒雅 门头 澳舒雅只
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?