| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 505 人关注过本帖
标题:连接验证的问题!
只看楼主 加入收藏
lgdcky
Rank: 2
等 级:论坛游民
威 望:5
帖 子:576
专家分:18
注 册:2006-8-5
结帖率:33.33%
收藏
 问题点数:0 回复次数:5 
连接验证的问题!

我做了一个数据库,里面只有name和Password2个属性,然后用程序连接验证,可是总是有问题,我数据库里有多少个用户名他就要我按多少次确定来验证!以下是我连接数据库的代码!不知道问题出在哪里!
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (ClassNotFoundException ce) {
System.out.println("驱动未被找到!");
}
try {
String url = "jdbc:odbc:Test";
String str = "select * from friends ";
Connection con = DriverManager.getConnection(url, "friends", "123456");
PreparedStatement s = con.prepareStatement(str);
ResultSet rs = s.executeQuery();
while (rs.next()) {
// System.out.println("asdfasdf");
if (rs.getString(1).equals(jTextField1.getText()) &&
rs.getString(2).equals(jTextField2.getText())) {
System.out.println("124346453656");
}
else {
JOptionPane.showMessageDialog(null, "姓名或密码输入输入错误!");
System.out.println("3kl4j35lkj345");
}

}
}
catch (SQLException ce) {
System.out.println(ce);
}

我的数据库里有5个数据验证时System.out.println("124346453656")这条语句打印了5次,问题到底出在哪里啊??

搜索更多相关主题的帖子: 验证 
2006-10-04 09:50
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
首先像你这样验证是不对的
你应该把用户名设为主键,然后按用户名把这一条记录找出来
记住,只有一条记录,然后判断密码是否相等就可以了

可惜不是你,陪我到最后
2006-10-04 11:58
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

像你这样把所有的记录都调出来,一条一条的比较是非常慢的,万一有几万个用户名怎么办,那岂不是要慢死?

select * from friends where name='xxx'
用这个语句就可以查询出用户名是xxx的记录了


可惜不是你,陪我到最后
2006-10-04 11:59
lgdcky
Rank: 2
等 级:论坛游民
威 望:5
帖 子:576
专家分:18
注 册:2006-8-5
收藏
得分:0 
哦!谢谢斑竹了!不过我不明白把那个设置为主键有什么作用呢??我这里的1就是name,也就是我数据库中的主键!像rs.getString(1)这样的写法是不是就不能识别谁是主键了呢??这样写是不是程序就有缺陷了啊??

2006-10-04 19:35
lgdcky
Rank: 2
等 级:论坛游民
威 望:5
帖 子:576
专家分:18
注 册:2006-8-5
收藏
得分:0 

现在代码改了可是却什么反应都没有了!这是怎么回事啊??
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (ClassNotFoundException ce) {
System.out.println("驱动未被找到!");
}
try {
String url = "jdbc:odbc:Test";
String str = "select * from friends where name='" + jTextField1.getText() +
"' and Password='" + jTextField2.getText() + "' ";
Connection con = DriverManager.getConnection(url, "friends", "123456");
PreparedStatement s = con.prepareStatement(str);
ResultSet rs = s.executeQuery();
while (rs.next()) {
System.out.println("asdfasdf");
String a = jTextField1.getText();
String b = jTextField2.getText();
String c = rs.getString("name");
String d = rs.getString("Password");
if (a.equals(c) && b.equals(d)) {
System.out.println(rs.getString("name"));
System.out.println(rs.getString("Password"));
JOptionPane.showMessageDialog(null, "登陆成功!");
}
else {
JOptionPane.showMessageDialog(null, "姓名或密码输入输入错误!");
System.out.println("3kl4j35lkj345");
}

在按了验证按钮后出现这样的错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
可是我不知道我那if后面的索引怎么出错了!

[此贴子已经被作者于2006-10-5 14:59:01编辑过]


2006-10-05 14:42
lgdcky
Rank: 2
等 级:论坛游民
威 望:5
帖 子:576
专家分:18
注 册:2006-8-5
收藏
得分:0 
没人回?自己顶!

2006-10-05 19:19
快速回复:连接验证的问题!
数据加载中...
 
   



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

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