我用flex做前台,java做后台。使用的平台是myeclipse8.5。想实现前台输入一些数据,然后把这些数据存储到mysql中。但是在进行的过程中出现了以下的错误:(搜索了网上一些说法,说是编码问题,要使用统一编码。但是搞了好久,我始终不知道怎样设定它们的编码,还请各位赐教。先谢过了)
insert into student values(?,?,?,?,?,?,?,?);
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'grade' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:995)
at book.BookService.savePsInfo(BookService.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:406)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1417)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:878)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:49)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:274)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
java关键代码:
public int savePsInfo(String Snum,String Sname,String college,String grade,String major,int classes,String tel,String tel2){
int result=0;
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
conn=DriverManager.getConnection(url,"root","4455121"); //获取数据库连接
stm=conn.createStatement(); //获取表达式
String sql="insert into student values(?,?,?,?,?,?,?,?);";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, Snum);
ps.setString(2, Sname);
ps.setString(3, college);
ps.setString(4, grade);
ps.setString(5, major);
ps.setInt(6, classes);
ps.setString(7, tel);
ps.setString(8, tel2);
System.out.println(sql);
ps.execute();
result=1;
}catch(SQLException e){
e.printStackTrace();
}
return result;
}
insert into student values(?,?,?,?,?,?,?,?);
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'grade' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:995)
at book.BookService.savePsInfo(BookService.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:406)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1417)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:878)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:49)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:274)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
java关键代码:
public int savePsInfo(String Snum,String Sname,String college,String grade,String major,int classes,String tel,String tel2){
int result=0;
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
conn=DriverManager.getConnection(url,"root","4455121"); //获取数据库连接
stm=conn.createStatement(); //获取表达式
String sql="insert into student values(?,?,?,?,?,?,?,?);";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, Snum);
ps.setString(2, Sname);
ps.setString(3, college);
ps.setString(4, grade);
ps.setString(5, major);
ps.setInt(6, classes);
ps.setString(7, tel);
ps.setString(8, tel2);
System.out.println(sql);
ps.execute();
result=1;
}catch(SQLException e){
e.printStackTrace();
}
return result;
}
解决方案 »
- MySQL Multiply prepared statement!
- 本机测试正常。上传到服务器,启动出现错误。求助哇
- 关于weblogic文件部署问题
- 我们想做一个service程序,这个service负责统一管理这台机器上装的一些设备(包括签字板,扫描仪等等),
- 需求分析与设计系列专题讲座(程序员免费参加)
- laoxing521(想做程序员的农民)请进来领分!
- 求Tomcat的下载地址!!!!!!!!!!!!!!!!!!!!!!!!!!!
- EJB菜鸟问题,请各位高手过来看看!!!在线等待中
- javax.mail.SendFailedException: 530 delivery not allowed to non-local recipient, try authenticating
- tomcat连接池
- 工作也有4年多了,想有点质的飞跃,是否要回过头去认真学习JAVA SDK中的源代码
- 集成SSH时出现这个错误严重: Exception sending context initialized event to listener instance
产生这个的原因是 位参数在设值时的起始位子为 0. 不是1.
ps.setString(2, Sname);
ps.setString(3, college);
ps.setString(4, grade);
ps.setString(5, major);
ps.setInt(6, classes);
ps.setString(7, tel);
ps.setString(8, tel2);
System.out.println(sql);
的起始位子是0么? 这个是1开始的吧……我把grade注释掉,在insert里插入数据就可以执行了但是中文字就变成了object Object.