下面是MySQL的写法
driver = com.mysql.cj.jdbc.Driver
url =jdbc:mysql://localhost/KLibrary?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
username = 用户名称
password = 密码
案例DEMO
Java代码
在 JDBC 中 JDBCUtils.java 加载配置文件时,路径使用的是Java项目的相对路径是存在本地的。
新建Package的文件utils(工具包)
新建一个Class类,名为JDBCUtils
package itwcn.com.utils;
import java.io.*;
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 password;
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("src/jdbc.properties"));
pro.load(new FileReader(path));
//3.获取属性,赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4.注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接
* @return 连接对象
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(Statement stmt, Connection conn) {
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs,Statement stmt, Connection conn) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
新建测试类TestUtils
测试JDBC连接是否成功
package itwcn.com.utils;
import java.sql.*;
import java.util.Scanner;
/**
*
* @Title: TestUtils.java
* @Description: TODO(描述)
* @author OriginalCoder
* @date 2020-12-02 01:28:09
*/
/**
* 练习:
* 需求:
* 1.通过键盘录入用户名和密码
* 2.判断用户是否登录成功
*
*/
public class TestUtils {
public static void main(String[] args) {
//1.键盘输入,接受用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
//2.调用方法
boolean flag = new TestUtils().login2(username,password);
//3.判断结果,输出不同语句
if (flag) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误!");
}
sc.close();
}
/**
* 登录方法
*
*/
public boolean login(String username,String password) {
if(username == null || password == null ) {
return false;
}
//连接数据库,判断是否登录成功
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//1.获取连接
try {
conn = JDBCUtils.getConnection();
//2.定义sql
String sql = "select * from user where username=' "+username+"' and password = '"+ password+"'";
System.out.println(sql);
//3.获取执行sql的对象
stmt = conn.createStatement();
//4.执行查询
rs = stmt.executeQuery(sql);
//5.判断
// if (rs.next()) { //如果有下一行,则返回true
// return true;
// } else {
// return false;
// }
return rs.next(); //如果有下一行,则返回true
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(rs,stmt,conn);
}
return false;
}
/**
* 登录方法:使用PreparedStatement实现
*
*/
public boolean login2(String username,String password) {
if(username == null || password == null ) {
return false;
}
//连接数据库,判断是否登录成功
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
//1.获取连接
try {
conn = JDBCUtils.getConnection();
//2.定义sql
String sql = "select * from user where username= ? and password = ?";
System.out.println(sql);
//3.获取执行sql的对象
pstmt = conn.prepareStatement(sql);
//给?赋值
pstmt.setString(1,username);
pstmt.setString(2,password);
//4.执行查询,不需要传递参数
rs = pstmt.executeQuery();
//5.判断
// if (rs.next()) { //如果有下一行,则返回true
// return true;
// } else {
// return false;
// }
return rs.next(); //如果有下一行,则返回true
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(rs,pstmt,conn);
}
return false;
}
}