惊!还能这样子登陆注册!
数据库的连接就省略了每个人的连接方式不同,在这就不一一赘述。
先进行简答的修改看看和数据库是否连通
import java.sql.*;
import java.util.Scanner;
public class jdk_test {
public static void main(String[] args) throws ClassNotFoundException ,SQLException{
// //1.导入jar包
// //2.注册驱动
// Class.forName("com.mysql.jdbc.Driver");//alt+回车
// //3.获取数据库连接对象
// Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/nch?useSSL=false","root","123456");
// //4.定义sql
// String sql="update nch1 set name = 'qwe' where id=2 " ;
// //5.获取执行sql语句的对象.Statement
// Statement statement = connection.createStatement();
// //6.执行sql语句,接收返回结果
// int count = statement.executeUpdate(sql);
// //7.处理结果
// System.out.println(count);
// //8.释放资源
// statement.close();
// connection.close();
出现这样的运行结果说明已经连接成功了!
步入主题
JDBC概念:Java Database Connectivity
基本步骤:
- 导入jar包,右键——> add as library
- 注册驱动
- 获取数据库连接对象Connection
- 定义sq|语句
- 获取执行sq|语句的对象,Staterment
- 执行sq|,接收返回结果
- 处理结果
- 释放资源
(如果有波浪线将光标移至波浪线处,alt+回车就会有对应的解决方法!)
创建一个jdbc.properties
url=jdbc:mysql://localhost:3306/nch?useSSL=false
user=root
password=123456
driver=com.mysql.jdbc.Driver
建立JDBCUtils.java文件
用于存放连接数据库的方法,及断开数据库的方法。
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String psssword;
private static String driver;
//读取文件,只需读取一次即可拿到这些值,使用静态代码块
static {
try {
//1.创建Properties集合类
Properties pro=new Properties();
//获取src路径下文件————>ClassLoader 类加载器
ClassLoader classLoader=JDBCUtils.class.getClassLoader();
URL res=classLoader.getResource("jdbc.properties");
String path = res.getPath();
System.out.println(path);
//2.加载文件
pro.load(new FileReader(path));
//3.获取数据,赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
psssword = pro.getProperty("password");
driver = pro.getProperty("driver");
//4.注册驱动
Class.forName(driver);
}catch (IOException e){
e.printStackTrace();
}catch (ClassNotFoundException e1){
e1.printStackTrace();
}
}
//连接
public static Connection getCounection() throws SQLException{
return DriverManager.getConnection(url,user,psssword);
}
//释放资源
public static void close(ResultSet rs,Statement stmt,Connection conn) throws SQLException{ //ResultSet 结果集
if(rs != null){
rs.close();
stmt.close();
}
if (stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
}
public static void close(Statement stmt,Connection conn) throws SQLException{
if (stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
}
}
主函数
用于登陆注册的验证
这一段呢是输出登陆和注册的信息
Scanner sc = new Scanner(System.in);
System.out.println("登陆/注册(1/0):");
if(sc.nextLine().equals("0"))
{
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
System.out.println("请确认密码:");
String repassword = sc.nextLine();
if(password.equals(repassword)){
//调用方法
boolean flag = new jdk_test().register(username,password);
if(flag){
System.out.println("注册成功!");
}else {
System.out.println("注册失败!");
}
}else {
System.out.println("两次输入的密码不同!");
}
}else {
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
//调用方法
boolean flag = new jdk_test().login(username,password);
if(flag){
System.out.println("登陆成功!");
}else {
System.out.println("登陆失败!");
}
}
}
登陆方法
//登陆方法
public boolean login(String username,String password) throws SQLException {
if(username == null || password == null) {
return false;
}
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try {
conn = JDBCUtils.getCounection();
//定义sql
String sql = "select * from user where name = '"+username+"' and password = '"+password+"'";
//获取执行sql对象
stmt = conn.createStatement();
//执行查询
rs=stmt.executeQuery(sql);
return rs.next();
}catch (SQLException e){
e.printStackTrace();
}finally {
JDBCUtils.close(rs,stmt,conn);
}
return false;
}
注册方法
//注册方法
public boolean register(String username,String password) throws SQLException {
boolean back=false;
if(username == null || password == null) {
return back;
}
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try {
conn = JDBCUtils.getCounection();
//确认该账号是否已被注册 查询语句
//定义sql
String sql1 = "select * from user where name = '"+username+"'";
//获取执行sql对象
stmt = conn.createStatement();
//执行查询
rs=stmt.executeQuery(sql1);
if(rs.next())
{
System.out.println("该账号已存在!");
return back;
}
//开始注册 插入语句
//定义sql
String sql = "INSERT INTO user (name,password) VALUES ('"+username+"','"+password+"')";
//获取执行sql对象
stmt = conn.createStatement();
//执行插入
if(stmt.executeUpdate(sql)>=1)
back=true;
return back;
}catch (SQLException e){
e.printStackTrace();
}finally {
JDBCUtils.close(stmt,conn);
JDBCUtils.close(rs,stmt,conn);
}
return back;
}
以下是运行所有结果的截图