将截断字符串或二进制数据问题,Java,sql

将截断字符串或二进制数据问题,Java,sql

问题描述:

我开的长度足够大了,可是还是报错

 ![图片说明](https://img-ask.****.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吧

直接模拟一条可能出错的数据插入试试(SQL执行),看看是否出错,出错的话就是SQL问题,直接找SQL问题

字段的数据类型设置的不对,应该用image类型

初步鉴定是连接数据库的原因,,先单独测下jdbc是否连接成功,,可能是驱动包或数据库安装的问题

首先断点下看看能不能执行到ps.executeUpdate();这一步,如果执行到这一步报too long,mysql数据库就把varchar改成text格式,这样就不用管它的长度,别的数据库应该也有类似的功能,到网上找下。