关于数据库出错了....高手帮忙下

Rain208 2007-06-21 12:10:54
下面就是我的登陆对话框中当点击登陆时 触发的代码

为什么从数据库中取出来的密码是乱码啊?

public void checkfill() {
String lname = Lname.getText();
char lpass[] = Lpass.getPassword();
if (lname.length() == 0) {
JOptionPane.showMessageDialog(this, "请输入用户名");
} else if (lpass.length == 0) {
JOptionPane.showMessageDialog(this, "请输入密码");

} else {
Logincon();
}
}

public void Logincon() {
String url = "jdbc:mysql://localhost:3306/lucky";
sqlname = "root";
sqlpass = "zhangyang";
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, sqlname, sqlpass);
// System.out.println("1 run ing now");
} catch (ClassNotFoundException e) {
System.out.println("装载驱动程序失败");
e.printStackTrace();
System.exit(1);
} catch (SQLException e) {
System.err.println("无法连接数据库");
e.getMessage();

}

try {
lname = Lname.getText();

String checkname = "select * from user where name=" + lname + "";
/*
* String strsql = "select * from user where (name='" + lname + "'
* and pass='" + lpass + "')";
*/
stmt = con.createStatement();
rs = stmt.executeQuery(checkname);
boolean flag = rs.next();

if (flag) {
lpass = Lpass.getPassword();
String checkpass = "select * from user where name=" + lname
+ "";
stmt = con.createStatement();
rs = stmt.executeQuery(checkpass);
rs.next();
char[] repass = rs.getString(1).toCharArray();
System.out.println(repass.toString());
boolean x=Arrays.equals(lpass,repass);
if (x) {

flags = 1;

} else {
JOptionPane.showMessageDialog(this, "密码错误");
Lpass.setText("");
}
}

else {
JOptionPane.showMessageDialog(this, "用户名不存在");
Lname.setText("");
Lpass.setText("");
return;
}
con.close();
rs.close();
stmt.close();
} catch (SQLException e) {
e.getStackTrace();
}

}



还有就是我在程序中注册用户后,存在数据库中也是乱码


表的结构如下
mysql> desc user;
+--------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------+------+-----+---------+-------+
| name | char(50) | NO | PRI | NULL | |
| pass | char(20) | NO | | NULL | |
| mail | char(80) | NO | | NULL | |
| adress | char(100) | NO | | NULL | |
+--------+-----------+------+-----+---------+-------+
4 rows in set (0.08 sec)



在数据库中存储为

mysql> select * from user;
+-----------+------------+---------------+----------------+
| name | pass | mail | adress |
+-----------+------------+---------------+----------------+
| 111 | [C@9ed927 | 111@163.com | 111 |
| 12 | [C@112f614 | 111@163.com | 111 |
| 121 | [C@12a54f9 | 121@163.com | 121 |
| 121313213 | [C@19106c7 | 111@163.com | 111 |
| 123 | [C@723d7c | 123@163.com | kjnh |
| 1231 | [C@13bad12 | 123@163.com | kjnh |
| 12313 | [C@13582d | 122@163.com | 122 |
| 198827 | [C@1975b59 | 111@163.com | 111 |
| 207 | [C@aeffdf | 123@163.com | kjnh |
| 208 | [C@b42cbf | 123@163.com | kjnh |


在这里用户名和密码一样,但是在数据库中显示不一样

谢谢改正...

...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
比特灵 2007-06-21
  • 打赏
  • 举报
回复
加密了吧?
Rain208 2007-06-21
  • 打赏
  • 举报
回复
还是你行哦
不是字符转码的问题哦
allan0527 2007-06-21
  • 打赏
  • 举报
回复
字符集转码问题。。。
支持中文的字符集是gbk。。。
在mysql根目录的my.ini中修改
[mysql]

default-character-set=gbk
LexChen 2007-06-21
  • 打赏
  • 举报
回复
这个应该不是取的问题,应该是你通过你的程序前端保存用户名和密码到数据库中时出的问题,建议检查一下那里
Rain208 2007-06-21
  • 打赏
  • 举报
回复
事实证明是我注册程序写错了
我注册时候存数据库的时候 就是存的乱码
谢谢大家了
Rain208 2007-06-21
  • 打赏
  • 举报
回复
没有加密啊
该怎么解决啊
急啊
网络不是很好...谢谢大家帮忙了
andybogard 2007-06-21
  • 打赏
  • 举报
回复
应该是密码加密问题
chenwei1215 2007-06-21
  • 打赏
  • 举报
回复
首先,查看数据库密码是否加密?如果没有加密?应该在存储密码和读取密码是有问题。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧