连接oracle的一个语句,应该写成:
SELECT UNAME FROM LOGIN WHERE UID=1001 AND PASS='admin';
由于PASS是char型的,所以必须加单引号,但在写登陆框时要写成:
String sql = "SELECT UNAME FROM LOGIN WHERE UID=? AND PASS=?" ;
这种形式,再通过getparameter()获取UID和PASS,这时PASS的单引号该怎么加???不加单引号会查找不出来结果……

解决方案 »

  1.   

    用PreparedStatement的話,不需要加引號的。
      

  2.   

      SELECT Chr(39) FROM DUAL;
      

  3.   

    UID用数字型参数,PASS用字符型参数
      

  4.   


    如果是自己拼接SQL,String sql = "SELECT UNAME FROM LOGIN WHERE UID= '"+id+"' AND PASS= '"+pass+"'" ;
      

  5.   

    改成这样还是不行啊……
    原来代码如下:
             PreparedStatement pstmt = null ; // 数据库预处理操作
    ResultSet rs = null ; // 查询要处理结果集
    boolean flag = false ; // 保存标记         Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;        String sql = "SELECT UNAME FROM LOGIN WHERE UID=? AND PASS=? ;
    pstmt = conn.prepareStatement(sql) ;
    pstmt.setString(1,request.getParameter("uid")) ;
    pstmt.setString(2,request.getParameter("upassword")) ;
    rs = pstmt.executeQuery() ; // 查询
    if(rs.next()){ // 如果有数据,则可以执行
    flag = true ; //  表示登陆成功
    name = rs.getString(1) ;
    }
    输入存在的数据查找出来的值为空,那个sql语句应该写成什么样才行啊???
      

  6.   

    改成这个样子还是不行:
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
    String uid=request.getParameter("uid");
    String upass=request.getParameter("upassword"); String sql = "SELECT UNAME FROM LOGIN WHERE UID='"+uid+"' AND PASS= '"+upass+"'" ;
    pstmt = conn.prepareStatement(sql) ;
    //pstmt.setString(1,request.getParameter("uid")) ;
    //pstmt.setString(2,request.getParameter("upassword")) ;
    rs = pstmt.executeQuery() ; // 查询
    if(rs.next()){ // 如果有数据,则可以执行
    flag = true ; //  表示登陆成功
    name = rs.getString(1) ;
    }
    请大家帮忙看下啊啊……
      

  7.   

    搞定了,不好意思好像是UID的问题,估计是个保留字之类的……换了个字段名就好了,谢谢大家!!!