JDBC(Java DataBase Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。
本文使用的時MySQL數據庫進行連接。
所用數據庫表結構如下:
方式一:(基本使用方式)
步驟:
- 註冊驅動
- 建立連接
- 創建Statement / PreparedStatement
- 執行查詢,得到結果集
- 關閉資源
具體代碼如下:
import java.sql.*;
/**
* JDBC使用
*/
public class JdbcDemo1 {
public static void main(String[] args){
String url = "jdbc:mysql://localhost:3306/king";
String user = "root";
String password = "123456";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//1.註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.建立連接
connection = DriverManager.getConnection(url, user, password);
//3.創建statement
statement = connection.createStatement();
//4.執行查詢 得到結果集
String sql = "select * from student";
resultSet = statement.executeQuery(sql);
//對結果集進行遍歷
while(resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println(id +" "+ name +" "+ age);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//5.關閉資源
try{
if(resultSet != null){
resultSet.close();
}
}catch (SQLException s){
s.printStackTrace();
}finally{
resultSet = null;
}
try{
if(statement != null){
statement.close();
}
}catch (SQLException s){
s.printStackTrace();
}finally{
statement = null;
}
try{
if(connection != null){
connection.close();
}
}catch (SQLException s){
s.printStackTrace();
}finally{
connection = null;
}
}
}
}
方式二:(配置文件+工具類實現)
流程與方法一大體相同,區別在於通過配置文件降低依賴關係,並抽取出工具類,供後面開發使用。
具體內容如下:
(1)配置文件:
(2)工具類:在工具類的靜態代碼塊部分讀取配置文件,然後註冊驅動。
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JdbcUitls {
static String driverClass = null;
static String url = null;
static String user = null;
static String password = null;
static {
try{
Properties properties = new Properties();
InputStream in = JdbcUitls.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(in);
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
}catch (Exception e){
e.printStackTrace();
}
}
//建立數據庫連接
public static Connection getConnection(){
Connection connection = null;
try{
//1.註冊驅動
Class.forName(driverClass);
//2.建立連接
connection = DriverManager.getConnection(url, user, password);
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
//關閉資源
public static void closeResource(ResultSet resultSet, Statement statement, Connection connection){
closeResultSet(resultSet);
closeStatement(statement);
closeConnection(connection);
}
private static void closeResultSet(ResultSet resultSet){
try{
if(resultSet != null){
resultSet.close();
}
}catch (SQLException s){
s.printStackTrace();
}finally{
resultSet = null;
}
}
private static void closeStatement(Statement statement){
try{
if(statement != null){
statement.close();
}
}catch (SQLException s){
s.printStackTrace();
}finally{
statement = null;
}
}
private static void closeConnection(Connection connection){
try{
if(connection != null){
connection.close();
}
}catch (SQLException s){
s.printStackTrace();
}finally{
connection = null;
}
}
}
測試代碼如下:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemoTest {
public static void main(String[] args){
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//建立連接
connection = JdbcUitls.getConnection();
//創建statemnet
statement = connection.createStatement();
//執行查詢 得到結果集
String sql = "select * from student";
resultSet = statement.executeQuery(sql);
//對結果集進行遍歷
while(resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println(id +" "+ name +" "+ age);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JdbcUitls.closeResource(resultSet, statement, connection);
}
}
}
*個人學習過程中的記錄,如有問題歡迎批評指正,共同進步。