当前位置: 代码迷 >> Java Web开发 >> java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).异常
  详细解决方案

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).异常

热度:897   发布时间:2016-04-17 14:04:47.0
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).错误
环境:TOMCAT6.0+JDK
注册代码:
<%@   page   contentType= "text/html;   charset=gb2312 "   %>
<%@   page   language= "java "   import= "java.sql.* "%>
<html>
<head>
<title> 系统用户注册 </title>  
</head>  
<%  
final   String   DBDRIVER   =   "com.microsoft.jdbc.sqlserver.SQLServerDriver "   ;  
final   String   DBURL   =   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myjob ";

Connection   conn   =   null   ;  
ResultSet   rs   =   null   ;  
String   name=null;
String   password=null;
String   user= "sa ";
String   pass= " ";
String   reg_name=request.getParameter( "name ");
String   reg_pass=request.getParameter( "password ");
Statement   st=null;
PreparedStatement   stat=null;
boolean   flag=true;
try
{  
Class.forName(DBDRIVER)   ;  
conn   =   DriverManager.getConnection(DBURL,user,pass)   ;  
st=conn.createStatement();
rs   =   st.executeQuery( "select   *   from   user1 ")   ;  
while(rs.next())  
{  

if(reg_name.equals(rs.getString(1))){
        out.println( " <br> <br> <center> <B> 请重新注册 </B> </center> ");
out.println( " <script> alert( '对不起,用户名 "+reg_name+ "已存在 ');location.replace( 'reg.jsp '); </script> ");
        flag=false;  
      break;
      }

}
if   (flag){
stat=conn.prepareStatement( "insert   user1(user1.name,user1.pass)   values( ' "+reg_name+ " ', ' "+reg_pass+ " ') ");
stat.setString(1,reg_name);
stat.setString(2,reg_pass);
stat.executeUpdate();
out.println( " <br> <br> <center> <B> 注册成功 </B> </center> ");
out.println( " <br> <br> <center> 您的用户名是: "+reg_name+ " </center> ");
out.println( " <br> <center> 您的密码是:       "+reg_pass+ " </center> ");
stat.close();
String   name_reged=null;
session.putValue( "name_reged ",reg_name);
out.println( " <script> alert( '谢谢注册,请登陆 ');location.replace( 'index.jsp ') </script> ");


}
rs.close()   ;  

conn.close()   ;  
}
catch(Exception   e)
{
out.println(e);
}
%>
</html>
报错:
java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC]Invalid   parameter   binding(s).  

请大侠们帮忙解决,小弟先谢过了


------解决方案--------------------
因为你有:

stat.setString(1,reg_name);
stat.setString(2,reg_pass);

所以要把

stat=conn.prepareStatement( "insert user1(user1.name,user1.pass) values( ' "+reg_name+ " ', ' "+reg_pass+ " ') ");

改成

stat = conn.prepareStatement( "insert user1(user1.name,user1.pass) values(?,?) ");

否则它找不到匹配的参数。
  相关解决方案