你的语句好像也有问题
stmt.executeUpdate(mSql);
prepstmt.executeUpdate(mSql);
应该是
prepstmt.executeUpdate();
通常出这样的错是某个对象为null

解决方案 »

  1.   

    空指针异常, obj.xxx();  //obj为null估计不在你给的这段代码中
      

  2.   

    好象问题不是出在这里,他指向的是
    prepstmt.setBinaryStream(5,fis,(int)file.length());
    不知道什么错误
      

  3.   

    你这个比较奇怪
    prepstmt.setBinaryStream(5,fis,(int)file.length());
                            ===
                            没看到你的sql中有"?"
      

  4.   

    回kingfish:
    有关数据库部分的代码都在这里了,没找出什么空指针,再帮忙看看,谢谢!   java.io.File file = new java.io.File(trace);
        java.io.FileInputStream fis = new java.io.FileInputStream(file);
        out.println(file.length());
        //打开数据库
        String url=new String();
        url="jdbc:odbc:";
        try  {  
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
    }  catch  (Exception  e2)  {  
    System.out.println("SQLBean:  driver  not  found.");  
    }  
    Connection con=DriverManager.getConnection(url);
    Statement stmt=con.createStatement();
        String mSql=null;
        mSql="insert into list(name,password,size)"+"values('"+myFileName+"','0000','"+fileSize+"')";
        PreparedStatement prepstmt =con.prepareStatement(mSql); 
    //prepstmt.setString(4, GetDateTime());
        prepstmt.setBinaryStream(5,fis,(int)file.length());
    stmt.executeUpdate(mSql);
    prepstmt.executeUpdate(mSql);
    String mSql2="select * from list";
    ResultSet rs=stmt.executeQuery(mSql2);
    while(rs.next()){
    String tempname=rs.getString("name");
    out.println(tempname);
    String tempclass=rs.getString("password");
      

  5.   

    sql中有?时他就改为:
    java.lang.ArrayIndexOutOfBoundsException: 3
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1021)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3034)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:764)
    at _upload__jsp._jspService(/upload.jsp:53)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
    at com.caucho.jsp.Page.subservice(Page.java:497)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
    at com.caucho.server.http.Invocation.service(Invocation.java:312)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:244)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
    at java.lang.Thread.run(Thread.java:536)代码如下:
      mSql="insert into list(name,password,size)"+"values('"+myFileName+"','0000','"+fileSize+"',?,?)";
      

  6.   

    mSql="insert into list(name,password,size)"+"values('"+myFileName+"','0000','"+fileSize+"',?,?)";
    字段只有3个, 后面参数有5个, 可变参数就2个(就是?), 哪里来的prepstmt.setBinaryStream(5,fis,(int)file.length());你明白这段代码你想做什么吗?
      

  7.   

    如果你的FileInputStream对象是file
    就应该这样写
    prepstmt.setBinaryStream(5,file,file.available());
      

  8.   

    kingfish(八百里秦川@龙城异客) 说的也对