A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何俊森 中级黑马   /  2013-4-26 10:05  /  980 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何俊森 于 2013-4-26 10:14 编辑
  1. package org.klaus.lobdemo;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.InputStream;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.PreparedStatement;

  8. public class ClobDemo01 {

  9.     /**
  10.      * @param args
  11.      */
  12.     //定义mysql 的数据库驱动程序
  13.     public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
  14.     public static final String DBURL = "jdbc:mysql://localhost:3306/mldn";
  15.     public static final String DBUSER = "root";
  16.     public static final String DBPASS = "mysqladmin";
  17.     public static void main(String[] args) throws Exception {
  18.         // TODO Auto-generated method stub
  19.         
  20.         Connection conn = null; //数据库连接
  21.         PreparedStatement pstmt = null; //数据库操作
  22.         String name = "jacob";
  23.         String sql = "insert into userclob(name,note)values(?,?)";
  24.         Class.forName(DBDRIVER);        //加载驱动程序
  25.         conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); //连上mysql数据库
  26.         pstmt = conn.prepareStatement(sql); //实例化{reparedStatement
  27.         File f = new File("d:" + File.separator + "feiq.txt");  //声明一个File对象,用于要操作的大文本文件
  28.         InputStream input = new FileInputStream(f); //输入流读取文件
  29.         //设置"?"内容
  30.         pstmt.setString(1, name);   
  31.         pstmt.setAsciiStream(2,input,(int)f.length());
  32.         pstmt.executeUpdate(); //执行数据库更新操作
  33.         pstmt.close();    //操作关闭
  34.         conn.close();        //连接关闭
  35.     }

  36. }

复制代码
文本feiq .txt有中文内容就会抛异常:Exception in thread "main" java.sql.SQLException: Incorrect string value: '\xBF\xC9\xD3\xD0\xBF\xC9...' for column 'note' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at org.klaus.lobdemo.ClobDemo01.main(ClobDemo01.java:32)
其中我的mysql中的character_set是这样的,一种是敲用户名进入的,另一个是安装了mysql后,开始目录下就有,直接点,不用输入用户名,要输入密码进去的,为什么显示字符设置不一样。我的 mysql是mysql-installer-community-5.5.28.3.msi。

捕获.PNG (35.05 KB, 下载次数: 18)

捕获.PNG

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

1 个回复

倒序浏览
我以前也出现这种问题,好像是编码问题,输入数据的编码与数据库中字段的编码不一致,你可以用MySQL Workbench 5.2 CE管理MySql数据库,把编码设置好。

评分

参与人数 1黑马币 +6 收起 理由
王怀亮 + 6

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马