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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔增阳 中级黑马   /  2013-5-22 22:02  /  2070 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔增阳 于 2013-5-23 10:20 编辑

package mysql;
import java.sql.*;
import java.text.SimpleDateFormat;

public class Test {

public static void main(String[] args) throws Exception{
  Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "nazi1987");
  
  String name="fff";
  int age=27;
  String birthday="2001-07-23";
  String password="789";
  String sex="'female'";
  String sql="insert into user(name,password,age,sex,birthday)values(?,?,?,?,?)";
  PreparedStatement ps=con.prepareStatement(sql);
  ps.setString(1,name);
  ps.setString(2,password);
  ps.setInt(3,age);
  ps.setString(4,sex);
  java.util.Date temp=new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
  java.sql.Date bir=new java.sql.Date(temp.getTime());
  ps.setDate(5,bir);
  ps.executeUpdate();
  
  Statement st=con.createStatement();
  String sql1="select * from user";
  ResultSet rs=st.executeQuery(sql1);
  while(rs.next()){
   int id=rs.getInt(1);
   String name1=rs.getString(2);
   String pass=rs.getString(3);
   int age1=rs.getInt(4);
   String sex1=rs.getString(5);
   java.util.Date d=rs.getDate(6);
   System.out.println(id+":"+name1+":"+pass+":"+age1+":"+sex1+":"+d);
  }
  con.close();
}
}





Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'sex' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
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 mysql.Test.main(Test.java:27)

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 新人鼓励,下次问问题详细点

查看全部评分

5 个回复

正序浏览
曹睿翔 发表于 2013-5-22 23:05
问题解决就再次编辑更改问题类型,没有解决继续追问

老曹很负责
回复 使用道具 举报
问题解决就再次编辑更改问题类型,没有解决继续追问
回复 使用道具 举报
package mysql;
import java.sql.*;
import java.text.SimpleDateFormat;

public class Test {

public static void main(String[] args) throws Exception{
   Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "nazi1987");
   
   String name="fff";
   int age=27;
   String birthday="2001-07-23";
   String password="789";
  String sex="'female'";//此处赋值过大,估计是数据库中该字段的长度为2,太小了。
   String sql="insert into user(name,password,age,sex,birthday)values(?,?,?,?,?)";
   PreparedStatement ps=con.prepareStatement(sql);
   ps.setString(1,name);
   ps.setString(2,password);
   ps.setInt(3,age);
   ps.setString(4,sex);
   java.util.Date temp=new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
   java.sql.Date bir=new java.sql.Date(temp.getTime());
   ps.setDate(5,bir);
   ps.executeUpdate();
   
   Statement st=con.createStatement();
   String sql1="select * from user";
   ResultSet rs=st.executeQuery(sql1);
   while(rs.next()){
    int id=rs.getInt(1);
    String name1=rs.getString(2);
    String pass=rs.getString(3);
    int age1=rs.getInt(4);
    String sex1=rs.getString(5);
    java.util.Date d=rs.getDate(6);//估计此处也会有异常,因为从数据库中取的时间格式是:java.sql.Date  所有需要转换成java.util.Date  即java.util.Date d= new java.util.Date(rs.getDate(6).getTime());
    System.out.println(id+":"+name1+":"+pass+":"+age1+":"+sex1+":"+d);
   }
   con.close();
}
}




评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 回答的很仔细

查看全部评分

回复 使用道具 举报
Data too long for column 'sex' at row 1
数据太长了啊。你的表中sex的字段设置的太短了。
回复 使用道具 举报
我了个去,想帮你解决的,但是看到这些代码我就吓尿了,太多啦,又还没用到elic什么工具来着
帮你顶一个
                                                
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马