String sql="insert into 'user_tbl(uname, pwd, email, category) values(?,?,?,?)";
     try {
    
     PreparedStatement ps=connection.prepareStatement(sql);
     ps.setString(1,"user1");//User.getname();     
ps.setString(2,"1234");
ps.setString(3,"[email protected]");
ps.setString(4, "user");
System.out.println("over1");
ps.executeUpdate();
JdbcUtil.release(ps);异常如下
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3288)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3272)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4108)
at Test.main(Test.java:18)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zilong003】截止到2008-07-06 11:08:46的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:20                       
    结贴的总数量:1                        结贴的总分数:20                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    String sql="insert into 'user_tbl(uname, pwd, email, category) values(?,?,?,?)";
    是不是多一个单引号阿?
      

  3.   

    String sql="insert into 'user_tbl(uname, pwd, email, category) values(?,?,?,?)";只有一个 单引号 !!!!
      

  4.   


    String sql="insert into 'user_tbl(uname, pwd, email, category) values(?,?,?,?)"; 
    java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 就是单引号的错误。有了单引号,引号里的东西就是字符串,问好不被看成parameters,所以执行setString(1,"");的时候出现错误,报错就是报parameters有0个,却要set 1进去。
    检查是不是有那个表,第二看数据库连接是不是连对了那个库。
    用mysql时,可以用“库名.表明”的形式来表示一个表。
      

  5.   

    去掉了引号以后就报了这个异常
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mysql.user_tbl' doesn't exist
      

  6.   

    同意楼上说的,估计楼主使用user_tbl表名时,系统将user认作关键字了,所以你才使用'user_tbl,这样就引起了参数个数的错误,建议你把'user_tbl改成[user_tbl]再试试。
      

  7.   

    注意楼主说了是 MySQL
    "insert into `user_tbl`(uname, pwd, email, category) values(?,?,?,?)"
      

  8.   

    解释一下:MySQL 中如果关键字构成了数据库对像名(例如表名、数据库名、字段名),为了防止 MySQL 误解,我们得用 ` 这一字符将名字括起来,注意不是单引号 ' 而是带 ~ 的键(Tab键上面)打出来的那个字符。
      

  9.   

    Table 'mysql.user_tbl' doesn't exist那就用你的库名啊?或者按照 segezk的方法用用看。更好的方法,在你的 jdbc 的 URL 里面,设置使用的 DatabaseName, 请参考这个
    url="jdbc:mysql://localhost:3306/yhcmusic?useUnicode=true&characterEncoding=UTF-8"其中的 yhcmusic 就是使用的库的名字。
      

  10.   

    强烈建议你不要用root帐号访问数据库,而应该用库自己的专用账号。
      

  11.   


    是哦,这下对了。我以前3306/后面写的是mysql但是我自己use 的数据库叫 mydb。谢谢你了。以前用oracle用多了。
      

  12.   

    可惜小弟不会有mysql建立新用户,只能用一个root
      

  13.   


    下个 GUI 管理工具:http://dev.mysql.com/downloads/gui-tools/5.0.html