【问题标题】:Store the image into database in netbeans将图像存储到netbeans中的数据库中
【发布时间】:2014-02-02 18:10:24
【问题描述】:

我正在尝试将图像与字符串一起存储到数据库中。我使用了下面给出的代码

 File image = new File("c:/a1.jpg");
 String d=jTextField1.getText();
FileInputStream  fis 
 try {
        psmnt = con.prepareStatement("insert into c(name,pic) "+ "values(?,?)");
         psmnt.setString(1,d);
        fis = new FileInputStream(image);
         psmnt.setBinaryStream(2,fis,(int) (image.length()));
        psmnt.executeUpdate();
     }
catch().....

我尝试了很多。但仍然收到错误“未实现或不合理的转换请求”。谁能帮助解决这个问题?pic 被声明为 blob 数据类型。谢谢。

【问题讨论】:

标签: swing oracle10g awt netbeans-7 netbeans-platform


【解决方案1】:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {



      try {  
         String sid="orcl";
         String username="user";
         String password= "pass";
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());  
         Connection connection = DriverManager.getConnection(  
                "jdbc:oracle:thin:@localhost:1521:"+sid, username, password);  

        //Statement statement = connection.createStatement();  
           File image = new File("c:/a1.jpeg");
           String d= "the pics";
           FileInputStream  fis ;
           fis = new FileInputStream(image);

          String query = " insert into c(name,pic)values(?,?)";
          PreparedStatement preparedStmt = connection.prepareStatement(query);
           //System.out.println("Data is inserted:");
           preparedStmt.setString(1, d);
           preparedStmt.setBinaryStream(2,fis,(int) (image.length()));

            // execute the preparedstatement
           preparedStmt.execute();
           connection.close(); 
   } catch (Exception e) {  
        e.printStackTrace();  
     }  
   System.out.println("Data is inserted:");

}

我想你已经在你的项目中添加了 oracle jar ojdbc14.jar

【讨论】:

  • 我试过了,它在我的电脑上工作。问题肯定出在 oracle 上,尤其是类型转换,你可以试试 psmnt.setBinaryStream(2,fis,(byte) (image.length()));而不是 psmnt.setBinaryStream(2,fis,(int) (image.length()));
  • 用setBinaryStream中的byte替换int
  • 是的先生,我已经完成了。现在它在 oracle.jdbc.driver.OraclePreparedStatement.setBinaryStream(OraclePreparedStatement.java:2550) 处显示 java.lang.NegativeArraySizeException。我检查了 fis,Image.length.这些不为空
  • 试试这个字节 bytes[]=new byte[(int)image.length()]; PreparedStmt.setBinaryStream(2,fis,bytes.length);
猜你喜欢
  • 2010-12-27
  • 2012-06-04
  • 2014-06-05
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多