2 ksj12 ksj12 于 2016.02.17 23:36 提问

将截断字符串或二进制数据问题,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();

6个回答

caozhy
caozhy   Ds   Rxr 2016.02.18 05:25
已采纳

检查你的数据库的表怎么定义的,比如学号列的长度如果是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吧

ksj12
ksj12 谢谢了,我真的眼瞎了
接近 2 年之前 回复
wangchixiao
wangchixiao   Rxr 2016.02.18 09:26

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

ksj12
ksj12   2016.02.17 23:38

图片说明

Yiran8935
Yiran8935   2016.02.18 09:07

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

Royal_lr
Royal_lr   Ds   Rxr 2016.02.18 09:43

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

xionglangs
xionglangs   Rxr 2016.02.18 11:16

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!