Java 使用 JDBC 连接 MySQL 数据库-0403记录

一些概念

JDBC API
定义了一系列的接口和类,集成在java.sql和javax.sql包中
DriverManager
管理各种不同的JDBC驱动
JDBC 驱动
负责连接不同类型的数据库

一些方法

加载驱动

Class.forName("JDBC驱动类名称"); Class.forName("JDBC驱动类名称").newstance;

获取数据库连接
Connection conn=DriverManager.getConnection(数据库URL,数据库用户名,密码)
在加载驱动及获取连接过程中,可能会出现异常,因此需要注意进行异常处理

Statement对象

通过Connection对象创建
Statement stmt=conn.createStatement();

用于执行SQL语句

ResultSet结果集

用于存储查询结果
只在执行select语句时返回

PreparedStatement概述

继承自Statement接口
能够对SQL语句进行预编译

PreparedStatement的优势

提高SQL语句执行效率
提高安全性

PreparedStatement的应用

SQL语句使用“?”作为数据占位符
在创建时对SQL语句进行预编译
使用setXxx()方法设置数据

数据库连接

导入相应版本的驱动包

连接数据库

使用statement

package jdbc0403;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class MyTest {
	// Mysql8 版本的
	// public static final String URL = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=flase&serverTimezone=UTC";
	// test为要连接的数据库名称
    
	// Mysql5 版本的
	public static final String URL = "jdbc:mysql://localhost:3306/test?Unicode=true&characterEncoding=utf-8";
	// 数据库的用户名与密码
	public static final String USER = "root";
	public static final String PASSWORD = "123456";

	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		// Scanner sc = new Scanner(System.in);
		try {
			// 步骤1:加载驱动类
			// Mysql 8
			// Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
			// Mysql 5
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			// 步骤2:通过DriverManager 获取Connection对象
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			// 步骤3:通过Connection对象获取数据库操作对象Statement对象
			stmt = conn.createStatement();
            
			// 步骤4:通过数据库操作对象执行sql语句返回结果集ResultSet
			// 创建SQL
			String sql = "select * from emp";
			rs = stmt.executeQuery(sql);
			// 步骤5 处理结果集ResultSet
			while (rs.next()) {
				System.out.println(rs.getInt("empno") + "--" + rs.getString("ename"));
			}

		} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				// 步骤6:关闭资源
                //注意资源关闭的顺序
				if (rs != null) {
					rs.close();
				}
				if (stmt == null) {
					stmt.close();
				}
				if (conn == null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

使用PreparedStatement

package jdbc0403;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class MyTest2 {
		//Mysql8 版本的
		//public static final String URL = " jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
		//Mysql5 版本的
		public static final String URL = "jdbc:mysql://localhost:3306/test?Unicode=true&characterEncoding=utf-8";
		public static final String USER ="root";
		public static final String PASSWORD="123456";
		public static void main(String[] args) {
			Connection conn = null;
			PreparedStatement pstmt = null;
			ResultSet rs = null;
			try {
				//步骤1:加载驱动类
				//Mysql 8 
				//Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
				//Mysql 5
				Class.forName("com.mysql.jdbc.Driver").newInstance();
				//步骤2:通过DriverManager 获取Connection对象
				conn = DriverManager.getConnection(URL,USER,PASSWORD);
				//步骤3:通过Connection对象获取数据库操作对象Pstatement对象
				//预编译 需要sql语句
				String sql ="insert into emp(empno,ename) values(?,?)";
				pstmt=conn.prepareStatement(sql);
				//步骤4:为?进行赋值
				pstmt.setInt(1, 25);
				pstmt.setString(2, "567");
				//执行语句
				int i = pstmt.executeUpdate();
				System.out.println(i);
				
				//查找
				String sqlquery ="select empno,ename from emp where empno=?";
				pstmt=conn.prepareStatement(sqlquery);
				pstmt.setInt(1,22);
				rs= pstmt.executeQuery();
				while(rs.next()){
					System.out.println(rs.getInt("empno")+"--"+rs.getString("ename"));
				}
				
				
			} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				try{
					//步骤6:关闭资源
					if(rs!=null){
						rs.close();
					}
					if(pstmt==null){
						pstmt.close();
					}
					if(conn==null){
						conn.close();
					}
				}catch(SQLException e){
					e.printStackTrace();
				}
			}
		}
}

posted @ 2020-04-04 14:50  shellxx  阅读(479)  评论(0)    收藏  举报