连接数据库并进行登录验证
之前遇到Java连接数据库的操作一直不是很清楚,最近学习了MySQL和JDBC,于是我把两者结合在一起写了一个连接数据库并进行登录验证的小程序,拿来和大家一起分享一下!
涉及内容:
1.SQL相关语法知识
2.DriverManager:驱动管理对象
功能:
(1)注册驱动:告诉程序该使用哪一个数据库驱动jar
(2)获取数据库连接
3.Connection:数据库连接对象
功能:
获取执行sql 的对象
4.PreparedStatement:执行sql的对象
优点:
(1)可以防止SQL注入
(2)效率更高
5.ResultSet:结果集对象,封装查询结果
准备工作:
1.安装mysql(或者其它关系型数据库);
2.创建数据库:
create database db1;
3.使用db1:
use db1;
4.创建用户表:
create table user(
id int primary key auto_increment,
username varchar(32),
password varchar(32)
);
5.添加用户数据:
insert into user values(null,'张三',123);
insert into user values(null,'李四',456);
...
具体实现步骤:
1.导入驱动jar包:
mysql-connector-java-5.1.37-bin.jar
2.注册驱动:
Class.forName("com.mysql.jdbc.Driver");
3.获取数据库连接对象Connection:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4","root","root");
注意:
localhost为本地主机,3306为Mysql默认端口号,db4为数据库名称。
第一个root为Mysql用户名,第二个root为密码。
(可根据自己实际情况做出更改)
4.定义SQL语句:
String sql = "select * from user where username = ? and userpassword = ?";
5.获取执行SQL语句的对象PreparedStatement:
PreparedStatement pstmt = conn.prepareStatement(sql);
6.给?赋值:
pstmt.setString(1,user);
pstmt.setString(2,password);
7.执行SQL语句,并接收返回结果:
ResultSet rs = pstmt.executeQuery();
8.处理结果:
return rs.next();
注意:
boolean next()
将光标从当前位置向前移一行。ResultSet 光标最初位于第一行之前;第一次调用
next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。
返回值:如果新的当前行有效,则返回 true;如果不存在下一行,则返回 false 。
9.释放资源:
rs.close();
pstmt.close();
conn.close();
源码:
package cn.web.jdbc.save_emp;
import java.sql.*;
import java.util.Scanner;
// 登录验证
public class Demo03 {
public static void main(String[] args) {
//控制台输入用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String user = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
Demo03 d = new Demo03();
//判断用户是否登录成功
if(d.login(user,password)){
System.out.println("登录成功");
}else{
System.out.println("用户名或密码错误");
}
}
//连接数据库进行查找
public boolean login(String user,String password){
//判断输入的内容是否为空
if(user == null || password == null){
return false;
}
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4",
"root","root");
//定义SQL语句
String sql = "select * from user where username = ? and userpassword = ?";
//获取执行SQL语句的对象
pstmt = conn.prepareStatement(sql);
//给?进行赋值
pstmt.setString(1,user);
pstmt.setString(2,password);
//接收结果
rs = pstmt.executeQuery();
//返回结果做判断
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//出现异常返回
return false;
}
}
提示:
如果连接不到数据库,可以先检查Mysql服务是否启动。
启动方法:
1.以管理员身份运行Windows Power Shell(命令行)。
2.输入 net start mysql 即可。
mysql-connector-java Windows版下载地址:http://dev.mysql.com/downloads/connector/