问题描述
- 将截断字符串或二进制数据问题,Java,sql
-
我开的长度足够大了,可是还是报错![图片说明](http://img.ask.csdn.net/upload/201602/17/1455723342_499331.png)
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb1){
Connection ct=null;
Statement stm=null;
PreparedStatement ps=null;
ResultSet rs=null;
//Statement stmt=null;
try {
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//创建连接对象 String url="jdbc:sqlserver://localhost:1433;databaseName=master"; //注册驱动程序,打开连接 ct=DriverManager.getConnection(url,"sa","ksj123456."); //预编译语句对象 String sql="insert into stu values(?,?,?,?,?,?)"; ps=ct.prepareStatement(sql); //参数赋值 ps.setString(1, jtf1.getText()); ps.setString(2, jtf1.getText()); ps.setString(3, jtf1.getText()); ps.setString(4, jtf1.getText()); ps.setString(5, jtf1.getText()); ps.setString(6, jtf6.getText()); //执行操作 ps.executeUpdate(); this.dispose();
解决方案
检查你的数据库的表怎么定义的,比如学号列的长度如果是2个字符(nvarchar(2)),而你试图插入005,就会报错,别的同理。
ps.setString(2, jtf1.getText());
ps.setString(3, jtf1.getText());
ps.setString(4, jtf1.getText());
ps.setString(5, jtf1.getText());
你确认这些都是jtf1么,我觉得应该是jtf2~5吧
解决方案二:
字段的数据类型设置的不对,应该用image类型
解决方案四:
直接模拟一条可能出错的数据插入试试(SQL执行),看看是否出错,出错的话就是SQL问题,直接找SQL问题
解决方案五:
初步鉴定是连接数据库的原因,,先单独测下jdbc是否连接成功,,可能是驱动包或数据库安装的问题
解决方案六:
首先断点下看看能不能执行到ps.executeUpdate();这一步,如果执行到这一步报too long,mysql数据库就把varchar改成text格式,这样就不用管它的长度,别的数据库应该也有类似的功能,到网上找下。