声音文件插入数据库老是出现无效参数捆绑的问题?请问各位大侠!该如何解决啊 ?
我的代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Music_db";
String user="sa";
String password="sa";
Connection conn=DriverManager.getConnection(url,user,password);
FileInputStream in=new FileInputStream("F:\\qq.mp3"); String sql="insert into music_table(Music_id,music_name) value(1,?)";
PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setBinaryStream(2,in,in.available());
pstmt.execute();
out.print("Welcome to song!");

%>
</body>
</html>异常情况为java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).急求解决方法(
我试过
应该是这句话的问题
pstmt.setBinaryStream(2,in,in.available());
)请多多指教!

解决方案 »

  1.   

    void setBinaryStream(int parameterIndex,InputStream x,int length);
    这个方法第三个参数是:该输入流将拥有给定字节数,就是的qq.mp3文件的大小;
      

  2.   

    File filename=new File("F:\\qq.mp3"); 
    long   l1=filename.length();    
    int   l2=(int)l1;
    FileInputStream   fis=new   FileInputStream(filename);
    String sql="insert into music_table(Music_id,music_name) value(1,?)";
    PreparedStatement pstmt=conn.prepareStatement(sql);
    ps.setBinaryStream(1,fis,l2);
    pstmt.execute();
    你的music_name是blob类型吗?你还有一个问题那个setBinaryStream中参数的parameterIndex指的是第几个问好,你那里就一个?,怎么有:pstmt.setBinaryStream(2,in,in.available())
      

  3.   

    多谢上面几位兄台,我用的是sqlserver数据库
    music_name是image类型
    等下
    我用你的方法试试看
      

  4.   

    不行啊,我用你的方法试了,没用。

    pstmt.setBinaryStream(2,in,in.available())
    修改后出现了
    [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: 'value' 附近有语法错误
    我调试过,我用同样的方法链接数据库来读取数据可以进行。也就是说能和数据库建立连接。但我这用来存储声音文件到数据库中时就不行了
    望各位大侠能指点迷津
    小弟在线等候!!
      

  5.   

    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.text.*"%>
    <%@ page import="java.io.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <%
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Music_db";
    String user="sa";
    String password="sa";
    Connection conn=DriverManager.getConnection(url,user,password);
    File filename=new File("F:\\qq.mp3");
    long l1=filename.length();
    int l2=(int)l1;
    FileInputStream in=new FileInputStream(filename); String sql="insert into music_table(Music_id,music_name) value(1,?)";
    PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setBinaryStream(1,in,l2);
    pstmt.execute();
    out.print("Welcome to song!");

    %>
    </body>
    </html>以上就是我修改后的代码!
      

  6.   

    String sql="insert into music_table(Music_id,music_name) value(1,?)";
    改成:String sql="insert into music_table(Music_id,music_name) values(1,?)";
    不好意思,犯了个错误
    我在本机测试成功