public  ResultSet selectUser(String tableName, String userName, String  passWd)
               ^这里是不是打了个回车?       throws SQLException

解决方案 »

  1.   

    可以程序中有特殊的显示不出来的字符。另外 stmt 没定义。
      

  2.   

    stmt  我在前面定义了
    现在我把程序改成这样:
    public  ResultSet selectUser(String tableName, String userName, String  passWd)   throws SQLException{
             String query = "SELECT   username    FROM " +  tableName + " WHERE  username=" +"'"+username+"'";
             String query1= "select   username    from"  +  tableName + " WHERE  username=" +"'"+username+"'"+"and  password="+"'"+passWd+"'";
                             System.out.print(query + "\n");
             ResultSet rs = stmt.executeQuery(query);
             if    (rs.getString(1)==null)
                   return  -1;
             else{
                    ResultSet rs = stmt.executeQuery(query1);
                    if    (rs.getString(1)==null)
                           return  -1;
                    else
                            return  1;
                  }          
                 
                }还是报错如下:
    $ javac  ExecuteSQL2.java
    ExecuteSQL2.java:50: illegal start of expression
                       public  ResultSet selectUser(String tableName, String userNam
    e, String  passWd)   throws SQLException{
                       ^
    1 error
      

  3.   

    开始“public  ResultSet selectUser(String tableName, String userName, String  passWd)”和
     “throws SQLException”确实有个回车,我现在把他们连上了,还是报错,咋回事?????
      

  4.   

    ResultSet rs = stmt.executeQuery(query1);
    之后

    rs.next();
    然后再rs.getString();
      

  5.   

    你是说这样吗?
    public  ResultSet  selectUser(String tableName, String userName, String  passWd) throws SQLException{
             String query = "SELECT   username    FROM " +  tableName + " WHERE  username=" +"'"+username+"'";
             String query1= "select   username    from"  +  tableName + " WHERE  username=" +"'"+username+"'"+"and  password="+"'"+passWd+"'";
                             System.out.print(query + "\n");
             ResultSet rs = stmt.executeQuery(query);
             rs.next();
             if    (rs.getString(1)==null)
                   return  -1;
             else{
                    ResultSet rs = stmt.executeQuery(query1);
                    rs.next();
                    if    (rs.getString(1)==null)
                           return  -1;
                    else
                            return  1;
                  }          
                 
                }我改了,编译没用,还是报:
    ExecuteSQL2.java:49: illegal start of expression
                        public  ResultSet  selectUser(String tableName, String userN
    ame, String  passWd) throws SQLException{这个错,就是说我写的方法的开始有错,那位能说说错在哪????????????
      

  6.   

    有一些错我已经写了注释了,不过你说的那个问题我并没有看到,你最好是把全部代码写出来,很可能是前一个方法出的问题。    public ResultSet selectUser(String tableName, String userName, String passWd)   // 注意 userName 的大小写
                throws SQLException {
            String query = "SELECT   username    FROM " + tableName
                    + " WHERE  username=" + "'" + username + "'";
            String query1 = "select   username    from" + tableName
                    + " WHERE  username=" + "'" + username + "'" + "and  password="
                    + "'" + passWd + "'";
            System.out.print(query + "\n");
            ResultSet rs = stmt.executeQuery(query);
            rs.next();
            if (rs.getString(1) == null)
                return -1;  // 返回类型是 ResultSet,不能返回 int
            else {
                ResultSet rs = stmt.executeQuery(query1);   // rs 重复定义
                rs.next();
                if (rs.getString(1) == null)
                    return -1;  // 返回类型是 ResultSet,不能返回 int
                else
                    return 1;   // 返回类型是 ResultSet,不能返回 int
            }    }
      

  7.   

    import    java.sql.*;
    import    java.io.*;
    import    java.util.Vector; 
    import    java.net.*;public  class   ExecuteSQL2{
         public   static  void   main(String[]  args){
          Connection  conn=null;
          try{
             
             Vector results = new Vector(); 
             String url = "jdbc:oracle:thin:@192.168.0.240:1521:bakkgl";
             String driver="oracle.jdbc.driver.OracleDriver";
             String query = "select *  from  tb_device"; 
             if (url ==null) throw  new  IllegalArgumentException("No  database  specified");
             
             if (driver!=null)  Class.forName(driver);
             
             conn=DriverManager.getConnection(url,"wyj","wyj");
             Statement  stmt=conn.createStatement();
           //  BufferedReader  in=new  BufferedReader(new  InputStreamReader(System.in));
             
             
             
             
            
                        
                        ResultSet rs = stmt.executeQuery(query); 
                        while (rs.next ()) {
                                System.out.println (rs.getString (1) + " " +
                                rs.getString (2)+" "+rs.getString (3)+" "+rs.getString (4)+" "+rs.getString (5)+" "+rs.getString (6)+" "+rs.getString (7)+" "+rs.getString (8)+" "+rs.getString (9));
                            }
                         
                         
                         /**
                验证输入的用户是否存在
                @param tableName  用户表的表名
                @param userName   要查询的用户
                @param passWd     指定要查询用户的密码
                
                */
                public  ResultSet  selectUser(String tableName, String userName, String  passWd) throws SQLException{
             String query = "SELECT   username    FROM " +  tableName + " WHERE  username=" +"'"+username+"'";
             String query1= "select   username    from"  +  tableName + " WHERE  username=" +"'"+username+"'"+"and  password="+"'"+passWd+"'";
                             System.out.print(query + "\n");
             ResultSet rs = stmt.executeQuery(query);
             rs.next();
             if    (rs.getString(1)==null)
                   return  rs;
             else{
                    ResultSet rs = stmt.executeQuery(query1);
                    rs.next();
                    if    (rs.getString(1)==null)
                           return  rs;
                    else
                            return  rs;
                  }          
                 
                }                   
                         
                      stmt.close(); 
                        
            
            
           }
           catch  (Exception  e){
            System.err.println(e);
            if (e instanceof  SQLException)
                System.err.println("SQL  State:"+((SQLException)e).getSQLState());
                
           }
           
           finally{
                  try{conn.close();}
           catch  (Exception  e){}
           
           
           }
         }
       }  
                                  
    全部代码就这些,你看看是咋回事????????
      

  8.   

    如果JDK的版本是1.3x或以前的,你的类可以编译通过
    如果JDK的版本是1.4x或以后的,请给你的类加上包名,这样就可以编译通过了,这是JDK1.4版本的俗成约定,所有类就必须有包名。
      

  9.   

    你的 selectUser 是定义在 main 方法中的……?晕,哪里错了吧。
      

  10.   

    是啊, main方法里怎么能套方法呢
      

  11.   

    你的程序我大概改了一下,是没有语法问题了,但是在逻辑上肯定还有问题。
    你的程序我看得太头晕了,建立你仔细研究研究 java 程序的结构。
    在一个方法内是不能定义另一个方法的,只能调用另一个方法。而且调用都会受到一些限制,这个三言两语就说不清楚了。
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Vector;public class ExecuteSQL2 {
        /**
         * 验证输入的用户是否存在
         * 
         * @param tableName
         *            用户表的表名
         * @param userName
         *            要查询的用户
         * @param passWd
         *            指定要查询用户的密码
         *  
         */
        public ResultSet selectUser(Statement stmt, String tableName,
                String userName, String passWd) throws SQLException {
            String query = "SELECT   username    FROM " + tableName
                    + " WHERE  username=" + "'" + userName + "'";
            String query1 = "select   username    from" + tableName
                    + " WHERE  username=" + "'" + userName + "'" + "and  password="
                    + "'" + passWd + "'";
            System.out.print(query + "\n");
            ResultSet rs = stmt.executeQuery(query);
            rs.next();
            if (rs.getString(1) == null)
                return rs;
            else {
                ResultSet rs1 = stmt.executeQuery(query1);
                rs1.next();
                if (rs1.getString(1) == null)
                    return rs1;
                else
                    return rs1;
            }    }    public static void main(String[] args) {
            Connection conn = null;
            try {            Vector results = new Vector();
                String url = "jdbc:oracle:thin:@192.168.0.240:1521:bakkgl";
                String driver = "oracle.jdbc.driver.OracleDriver";
                String query = "select *  from  tb_device";
                if (url == null)
                    throw new IllegalArgumentException("No  database  specified");            if (driver != null)
                    Class.forName(driver);            conn = DriverManager.getConnection(url, "wyj", "wyj");
                Statement stmt = conn.createStatement();
                //  BufferedReader in=new BufferedReader(new
                // InputStreamReader(System.in));            ResultSet rs = stmt.executeQuery(query);
                while (rs.next()) {
                    System.out.println(rs.getString(1) + " " + rs.getString(2)
                            + " " + rs.getString(3) + " " + rs.getString(4) + " "
                            + rs.getString(5) + " " + rs.getString(6) + " "
                            + rs.getString(7) + " " + rs.getString(8) + " "
                            + rs.getString(9));
                }            stmt.close();        } catch (Exception e) {
                System.err.println(e);
                if (e instanceof SQLException)
                    System.err.println("SQL  State:"
                            + ((SQLException) e).getSQLState());        } finally {
                try {
                    conn.close();
                } catch (Exception e) {
                }        }
        }
    }
      

  12.   

    我现在把程序改了一下,把我写的方法放在main方法之前,现在编译出错如下:
    $ javac  ExecuteSQL2.java
    ExecuteSQL2.java:36: unreported exception java.lang.ClassNotFoundException; must
     be caught or declared to be thrown
               if (driver!=null)  Class.forName(driver);
                                               ^
    1 error
    $
    程序的源码如下:
    package  app.com.web;import    java.sql.*;
    import    java.io.*;
    import    java.util.Vector; 
    import    java.net.*;public  class   ExecuteSQL2{
          /**
         验证输入的用户是否存在
         @param tableName  用户表的表名
         @param userName   要查询的用户
         @param passWd     指定要查询用户的密码
          */              
        public int  selectUser(String tableName, String userName, String  passWd)  throws SQLException
        {
         Connection  conn=null;
         Statement stmt = null;
    ResultSet rs   = null;
    int       result = 0 ;
    String url = "jdbc:oracle:thin:@192.168.0.240:1521:bakkgl";
         
            //String query = "SELECT   username    FROM " +  tableName + " WHERE  username=" +"'"+username+"'";
            String query = "SELECT   username    FROM " +  tableName + " WHERE  username=" +userName+"and  password="+passWd;
           
           //Debug.println("[GradeDAOImpl]DAO SQLString is===============>: "+ queryStr);
            System.out.print(query + "\n");
            
            try {
               Vector results = new Vector(); 
               String driver="oracle.jdbc.driver.OracleDriver";
               if (url ==null) throw  new  IllegalArgumentException("No  database  specified");
             
             if (driver!=null)  Class.forName(driver);
             
             conn=DriverManager.getConnection(url,"wyj","wyj");
             stmt=conn.createStatement();
             rs = stmt.executeQuery(query); 
        if (rs.next())
         result = 1;
        else
            result=-1;
            
            
            } catch(SQLException e) {
                    System.err.println(e);
            if (e instanceof  SQLException)
                System.err.println("SQL  State:"+((SQLException)e).getSQLState());
            } finally {
             try{
                rs.close();
                stmt.close();
                conn.close();
                }
            catch (SQLException e)
             {         }
            }
            return result;
        }
                       
                                  
                
                
         public   static  void   main(String[]  args){
          Connection  conn=null;
          try{
             //   String   driver=null,url=null,user="",password="";
            // for(int   n=0;n<args.length;n++){
            //  if  (args[n].equals("-d"))   driver=args[++n];
            //  else if (args.equals("-u"))  user=args[++n];
            //  else if (args.equals("-p"))  password=args[++n];
            //  else if (url == null) url=args[n];
            //  else  throw  new  IllegalArgumentException("Unknown argument.");
            // }
             Vector results = new Vector(); 
             String url = "jdbc:oracle:thin:@192.168.0.240:1521:bakkgl";
             String driver="oracle.jdbc.driver.OracleDriver";
             String query = "select *  from  tb_device"; 
             if (url ==null) throw  new  IllegalArgumentException("No  database  specified");
             
             if (driver!=null)  Class.forName(driver);
             
             conn=DriverManager.getConnection(url,"wyj","wyj");
             Statement  stmt=conn.createStatement();
           //  BufferedReader  in=new  BufferedReader(new  InputStreamReader(System.in));
             
                        ResultSet rs = stmt.executeQuery(query); 
                        while (rs.next ()) {
                                System.out.println (rs.getString (1) + " " +
                                rs.getString (2)+" "+rs.getString (3)+" "+rs.getString (4)+" "+rs.getString (5)+" "+rs.getString (6)+" "+rs.getString (7)+" "+rs.getString (8)+" "+rs.getString (9));
                            }   
                      stmt.close(); 
                        
          
           }
           catch  (Exception  e){
            System.err.println(e);
            if (e instanceof  SQLException)
                System.err.println("SQL  State:"+((SQLException)e).getSQLState());
                
           }
           finally{
                  try{conn.close();}
           catch  (Exception  e){}
           
           
           }
         }
       
       
    }  
    为啥这次driver老是给我报错,我在main方法里面用的driver也是没错呀?咋回事??????
      

  13.   

    Class.forName 可能抛出 ClassNotFoundException,所以你应该处理这个异常。这个异常在 JVM 没有打开指定的类时抛出,如下代码:
                if (driver != null) {
                    try {
                        Class.forName(driver);
                    } catch (ClassNotFoundException e1) {
                        System.out.println("Cannot found class : " + driver);
                        e1.printStackTrace();
                        return -1;
                    }
                }
      

  14.   

    说明一下:
    Class.forName 可能抛出 ClassNotFoundException,所以你应该处理这个异常。这个异常在 JVM 没有打开指定的类时抛出,如下代码:这句话中的“打开”应该是“找到”,笔误,修改后:Class.forName 可能抛出 ClassNotFoundException,所以你应该处理这个异常。这个异常在 JVM 没有找到指定的类时抛出,如下代码: