在线等待:上传图片到数据库出现的一个问题

时间:2021-05-30 08:31:26
我通过这种方式上传图片到数据库,
///
PreparedStatement ps=conn.prepareStatement(sql);
ps.setBinaryStream(1,fis,fis.available());//fis 为FileInputStream对象
ps.executeUpdate();
//sqlserver数据库对应的列类型为image
但是,运行结果出现错误提示:
[Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。
怎么样才能解决这个问题!

15 个解决方案

#1


ding

#2


怎么把图片读到一个变量里边的
谢谢

#3


帮忙顶着有分,不够再家1

#4


上传图片的思想和步骤是什么?

#5


File file1=new File(image1);
    FileInputStream fis=new FileInputStream(file1);
    String fileName=file1.getName();
    String table=movKind;//电影类型
    String sql="insert into "+table+" values('";
    sql=sql+title+"','"+actor+"','"+pubTime+"','"+pubArea+"',"+"?";
    sql=sql+",'"+content+"','"+filesNum+"','"+0+"','"+uploadTime;
    sql=sql+"','"+movieAdd+"','"+filmLevel+"')";
    out.println(sql);
    try{
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection conn=DriverManager.getConnection("jdbc:odbc:myDB");
      PreparedStatement ps=conn.prepareStatement(sql);
      ps.setBinaryStream(1,fis,fis.available());
      ps.executeUpdate();
      ps.close();
      fis.close();
    }
    catch(Exception e)
    {
    System.err.println(e.getMessage());
    }
    System.out.println("ok!");
%>

#6


你要设置上传的文件的大小,否则文件大了缺省植就会报错了。在sql 中加入 set textsiz  10000000 ;yoursql;

#7


什么意思?

#8


"set textsize 10000000;sql;"??
是不是这样?

#9


尝试过了,任然没用!

#10


再问!

#11


prestmt.setBinaryStream(5,fis,(int)file.length());

是长度没设够吧

#12


再问!

#13


原因找出了,是因为数据类型与数据库中的数据类型不匹配。

#14


原因找出了,是因为数据类型与数据库中的数据类型不匹配。

#15


难道不是image类型吗?

#1


ding

#2


怎么把图片读到一个变量里边的
谢谢

#3


帮忙顶着有分,不够再家1

#4


上传图片的思想和步骤是什么?

#5


File file1=new File(image1);
    FileInputStream fis=new FileInputStream(file1);
    String fileName=file1.getName();
    String table=movKind;//电影类型
    String sql="insert into "+table+" values('";
    sql=sql+title+"','"+actor+"','"+pubTime+"','"+pubArea+"',"+"?";
    sql=sql+",'"+content+"','"+filesNum+"','"+0+"','"+uploadTime;
    sql=sql+"','"+movieAdd+"','"+filmLevel+"')";
    out.println(sql);
    try{
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection conn=DriverManager.getConnection("jdbc:odbc:myDB");
      PreparedStatement ps=conn.prepareStatement(sql);
      ps.setBinaryStream(1,fis,fis.available());
      ps.executeUpdate();
      ps.close();
      fis.close();
    }
    catch(Exception e)
    {
    System.err.println(e.getMessage());
    }
    System.out.println("ok!");
%>

#6


你要设置上传的文件的大小,否则文件大了缺省植就会报错了。在sql 中加入 set textsiz  10000000 ;yoursql;

#7


什么意思?

#8


"set textsize 10000000;sql;"??
是不是这样?

#9


尝试过了,任然没用!

#10


再问!

#11


prestmt.setBinaryStream(5,fis,(int)file.length());

是长度没设够吧

#12


再问!

#13


原因找出了,是因为数据类型与数据库中的数据类型不匹配。

#14


原因找出了,是因为数据类型与数据库中的数据类型不匹配。

#15


难道不是image类型吗?