你的语句好像也有问题
stmt.executeUpdate(mSql);
prepstmt.executeUpdate(mSql);
应该是
prepstmt.executeUpdate();
通常出这样的错是某个对象为null
stmt.executeUpdate(mSql);
prepstmt.executeUpdate(mSql);
应该是
prepstmt.executeUpdate();
通常出这样的错是某个对象为null
prepstmt.setBinaryStream(5,fis,(int)file.length());
不知道什么错误
prepstmt.setBinaryStream(5,fis,(int)file.length());
===
没看到你的sql中有"?"
有关数据库部分的代码都在这里了,没找出什么空指针,再帮忙看看,谢谢! 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");
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+"',?,?)";
字段只有3个, 后面参数有5个, 可变参数就2个(就是?), 哪里来的prepstmt.setBinaryStream(5,fis,(int)file.length());你明白这段代码你想做什么吗?
就应该这样写
prepstmt.setBinaryStream(5,file,file.available());