JDBC连接MYSQL数据库步骤
一.添加JDBC驱动
1.下载JDBC驱动程序 ,可以在清华大学开源软件镜像站下载相应的JDBC驱动程序,下载后解压压缩包,复制jar文件
2.将jar文件拷贝到项目中,如下:新建一个libs文件夹并把驱动包放在里面
3.右键jar包,添加到项目依赖库中
二.连接到数据库
1.加载JDBC驱动
try {
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
2.定义数据库的地址和账号密码
//连接MySql数据库
//数据库地址最好指定编码,以免出现无法插入中文数据的问题
String url = "jdbc:mysql://localhost:3306/sqltest?useUnicode=true&characterEncoding=utf-8" ;
String username = "root" ;
String password = "654321" ;
3.创建数据库连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sqltest?useUnicode=true&characterEncoding=utf-8","root","654321");
4.创建Statement
要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型:
- 执行静态SQL语句。通常通过Statement实例实现。
- 执行动态SQL语句。通常通过PreparedStatement实例实现。
- 执行数据库存储过程。通常通过CallableStatement实例实现。
Statement statement = connection.createStatement();
5.定义并执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute
- ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 ,返回一个ResultSet对象。
- int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
- execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 语句。
下面是使用executeUpdate的案例:
String sql = "update jdbctable set name ='中文' where id = 2";
//返回的是影响的行数
int cout = statement.executeUpdate(sql);
6.处理结果
- 执行更新返回的是本次操作影响到的记录数。
- 执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
while(rs.next()){
String name = rs.getString("name") ;
}
7.关闭连接,释放资源
需要把记录集,声明 ,连接对象全部关闭
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException var6) {
var6.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException var5) {
var5.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException var4) {
var4.printStackTrace();
}
}
}
三.读取配置文件来获取数据库地址并封装相关函数
1.创建配置文件
在src目录下新建一个jdbc.properties文件,内容指定数据库的地址,用户名和密码以及驱动
url=jdbc:mysql://localhost:3306/sqltest?useUnicode=true&characterEncoding=utf-8
user=root
password=654321
driver=com.mysql.jdbc.Driver
2.创建数据库连接类
封装连接和关闭数据库的有关内容:
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
public JDBCUtils() {
}
public static Connection getconnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException var6) {
var6.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException var5) {
var5.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException var4) {
var4.printStackTrace();
}
}
}
static {
try {
Properties properties = new Properties();
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
System.out.println(path);
properties.load(new FileReader(path));
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
driver = properties.getProperty("driver");
Class.forName(driver);
} catch (IOException var4) {
var4.printStackTrace();
} catch (ClassNotFoundException var5) {
var5.printStackTrace();
}
}
}
3.在主类中使用刚刚写的工具类
import java.sql.*;
import java.util.Scanner;
/**
* @Auther Jack
* @Date 2020/7/20
*/
public class jdbc_test {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Scanner sc =new Scanner(System.in);
System.out.println("请输入用户名:");
String username=sc.nextLine();
System.out.println("请输入密码:");
String password=sc.nextLine();
boolean loginFlag = new jdbc_test().login(username,password);
if(loginFlag){
System.out.println("登录成功");
}
else {
System.out.println("登录失败");
}
}
public boolean login(String username ,String password){
if(username==null||password==null){return false;}
Connection connection=null;
Statement statement=null;
ResultSet resultSet =null;
try {
connection=JDBCUtils.getconnection();
String sql = " select * from jdbctable where name='"+username+"' and password = '"+password+"'";
statement=connection.createStatement();
resultSet=statement.executeQuery(sql);
return resultSet.next();
} catch (SQLException e) {
e.printStackTrace();
}
finally {JDBCUtils.close(resultSet,statement,connection);
}
return false;
}
}
四.测试运行:
数据库内容: