有两个文件
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这个值的啊,亲娘唉,真令人费解啊.
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文档了:)
问题已经解决了,就是数据结果集的null问题,谢谢了先