| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1666 人关注过本帖
标题:[求助]为什么我在sql中执行execute返回的都是true呢?
只看楼主 加入收藏
yc12
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-15
收藏
 问题点数:0 回复次数:9 
[求助]为什么我在sql中执行execute返回的都是true呢?
Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@127.0.0.1:1521:yuanchao";
            con = DriverManager.getConnection(url,"scott","tiger");
            st = con.createStatement();
            String sql = "select * from emp where empno="+p+" and ename='"+name+"'";
            System.out.println(sql);
            b = st.execute(sql);
            System.out.println(p+name);
            System.out.println(b);
我就是想做一个用户名和密码验证的例子,但好像返回的都是true。。
谢谢大家帮忙看看 !
搜索更多相关主题的帖子: execute sql 
2008-09-03 15:57
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
execute
boolean execute(String sql)
                throws SQLException执行给定的 SQL 语句,该语句可能返回多个结果。在某些(不常见)情形下,单个 SQL 语句可能返回多个结果集合和/或更新计数。这一点通常可以忽略,除非正在 (1) 执行已知可能返回多个结果的存储过程或者 (2) 动态执行未知 SQL 字符串。
execute 方法执行 SQL 语句并指示第一个结果的形式。然后,必须使用方法 getResultSet 或 getUpdateCount 来获取结果,使用 getMoreResults 来移动后续结果。


参数:
sql - 任何 SQL 语句
返回:
如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false

I'm here, as always...
2008-09-04 09:34
yc12
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-15
收藏
得分:0 
版主,那么要验证用户名和密码该如何验证呢?

俺是只大菜鸟!!
2008-09-04 12:56
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
你怎么做的?只用了Jsp么?

I'm here, as always...
2008-09-04 13:23
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
收藏
得分:0 
看下resultset里面有没有值就行了
2008-09-04 16:28
yc12
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-15
收藏
得分:0 
jsp+servlet+javabean

俺是只大菜鸟!!
2008-09-04 16:33
yc12
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-15
收藏
得分:0 
javabean:


public class CheckUser {
    Connection con = null;
    PreparedStatement st = null;
    ResultSet rs = null;
    boolean b = true;
    public boolean checkUser(String name,int p)
    {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@127.0.0.1:1521:yuanchao";
            con = DriverManager.getConnection(url,"scott","tiger");
            String sql = "select * from emp where empno=? and ename= ?";
            st = con.prepareStatement(sql);
        
            st.setInt(1, p);
            st.setString(2, name);
            System.out.println(sql);
            System.out.println(st.execute());
            boolean b  = st.execute();
            
            
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {
            if(rs!=null)
            {
                try {
                    rs.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(st!=null)
            {
                try {
                    st.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(con!=null)
            {
                try {
                    con.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        
            if(b==true)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

}
问题好像出在红色的地方!只要赋值,返回的结果就是赋的直的结果

[[it] 本帖最后由 yc12 于 2008-9-4 16:36 编辑 [/it]]

俺是只大菜鸟!!
2008-09-04 16:35
yc12
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-15
收藏
得分:0 
servlet:应该没什么问题?
response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String strname = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        int p = Integer.parseInt(pwd);
        CheckUser c = new CheckUser();
        boolean b = c.checkUser(strname, p);
        if(b==true)
        {
            out.println("ok");
        }
        else
        {
            out.println("out");
        }

俺是只大菜鸟!!
2008-09-04 16:36
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
你这样b只能是true,ResultSet你没用啊。用它来存储返回结果,然后在这个结果中读出username和passsword,再进行判断,再看是否验证成功来设置b就好了

I'm here, as always...
2008-09-04 17:27
yc12
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-15
收藏
得分:0 
多谢版主了,我用resultset对象做出来了,但是如果不用resultset能不能做呢?我以前是做asp的,直接就可以execute就能判断了!不用resultset。要是不用resultset对象,可以不可以判断呢?

[[it] 本帖最后由 yc12 于 2008-9-5 09:45 编辑 [/it]]

俺是只大菜鸟!!
2008-09-05 09:05
快速回复:[求助]为什么我在sql中执行execute返回的都是true呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019437 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved