一个查询登陆数据验证的程序

有两个文件

public class talkServer {

/*中间件主程序

*/

public static void main(String[] args) {

// TODO: Add your code here

db_Access db= new db_Access();

if(db.loging(args[0],args[1])){

System.out.println("验证通过");

}

else{

System.out.println("验证失败");

};

}

}

///////////////////////////////////////////////////////////////////////

import java.sql.*;

import java.util.*;

public class db_Access {

private Connection db_connect;//定义与数据库进行连接的对象

private ResultSet rs;         //定义数据库查询结果对象

private Statement st;         //定义数据库查询对象

// private Vector vt;            //定义结果数组

public db_Access(){

try{

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //知道是返回一个JDBC-ODBC的桥驱动程序对象,但是在这里这样写有什么作用

    //就不得而知了

    String url ="jdbc:odbc:talkdb";

    db_connect = DriverManager.getConnection(url);

    st = db_connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

       ResultSet.CONCUR_READ_ONLY); //创建statement接口对象实例

}

catch(Exception e){

//可以把异常做成一个类,不知道有没有现成的好类可以用的

e.printStackTrace();

}

}

public boolean loging(String un,String pd){

String strSQL = "SELECT count(id) AS aid FROM userinfo WHERE (username ='"

  + un +"')AND(password ='" + pd +"')" ;

try{

    rs = st.executeQuery(strSQL); //执行设计好的sql语句

        rs.next();

            if (rs.getInt(1)==0){  //这里的getInt()的字段索引居然是1,那么0是什么哪?

    return false;

    }

    else{

    return true;

    }

}

catch(Exception e){

e.printStackTrace();

}

return false;

}

}

数据库格式为 id username password

有个问题,为什么当我故意查找错误的username和password的时候,

rs.getInt老是抛出"非法游标状态"的异常?正确的密码组合到没事情

我用的是select count啊,应该返回0这个值的啊,亲娘唉,真令人费解啊.

Author: happyjoe

haha

2 thoughts on “一个查询登陆数据验证的程序”


  1.         rs.next();

                if (rs.getInt(1)==0){  //这里的getInt()的字段索引居然是1,那么0是什么哪?

        return false;

        }

        else{

        return true;

        }

    应该在游标移动时判断一下,有记录才取数据:

    if (rs.next()) {

      //some code

    }


               if (rs.getInt(1)==0){  //这里的getInt()的字段索引居然是1,那么0是什么哪?

    字段的索引是人为定的,你可以查看相关的文档,现在有了全中文的jdk文档了:)

Comments are closed.