技術樂於分享,轉載請說明出處。
一.JDBC編程步驟:
1.註冊一個Driver
2. 建立連接
3.獲得一個Statement對象
4.通過Statement執行sql語句
5.處理結果集
6.關閉數據庫連接
二.代碼演示:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
/*
* 本此程序用於JDBC技術下MySQL數據庫的基本演示
* 程序展示了註冊數據庫驅動、加載驅動等MySQL的JDBC連接技術
* 以及展示瞭如何創建表,執行簡單查詢、刪除記錄的簡單操作
* 運行本程序之前請確保已經導入驅動包,作者所用驅動包名稱爲:mysql-connector-java-5.1.24-bin.jar
* 確保文中url:jdbc:mysql://localhost/school存在
*/
public class TestSql {
/**
* @author 史明-杭州電子科技大學
*/
private String url = "jdbc:mysql://localhost/school";// 格式jdbc:mysql:(協議)localhost(IP地址)school(庫名)
private String user = "root";//數據庫用戶名
private String password = "root";//數據庫密碼
private static String driver = "com.mysql.jdbc.Driver";//驅動名
private Connection connection = null;
private Statement statement = null;
private ResultSet resultSet = null;
public TestSql() {
}
/*
* 雖然try{}代碼塊可以放在構造函數中, 但JAVA規範中明確規定:所有驅動程序必須在靜態初始化代碼塊中將驅動註冊到驅動程序管理器中
*/
static {
try {
Class.forName(driver);// 註冊驅動
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/*
* 查詢演示
*/
public void selectTest() {
String command = "select *from student";
try {
connection = DriverManager.getConnection(url, user, password);// 建立連接
statement = connection.createStatement();
resultSet = statement.executeQuery(command);
while (resultSet.next()) {
System.out.println(resultSet.getObject(1) + "\t"
+ resultSet.getObject(2));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
free(resultSet, statement, connection);
}
}
/*
* 插入記錄演示
*/
public void insertTest() {
String command = "INSERT INTO student" + "(name, grade)"
+ "VALUES('Jack', 99)";
try {
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
statement.executeUpdate(command);
} catch (SQLException e) {
e.printStackTrace();
} finally {
free(resultSet, statement, connection);
}
}
/*
* 創建表演示
*/
public void createTest() {
String command = "create table student"
+ "(name char(20) primary key, grade int )";
try {
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
statement.executeUpdate(command);
} catch (SQLException e) {
System.out.println("相同表已存在");
} finally {
free(resultSet, statement, connection);
}
}
/*
* 刪除記錄演示
*/
public void deleteTest() {
String command = "DELETE FROM student" + " where name = 'Jack' ";
try {
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
statement.executeUpdate(command);
} catch (SQLException e) {
e.printStackTrace();
} finally {
free(resultSet, statement, connection);
}
}
/*
* 關閉數據庫資源 數據庫資源稀缺,不要等回收器來回收,養成主動關閉數據庫的習慣
* 注意關閉順序,依次ResultSet,Statement,Connection
*/
public void free(ResultSet resultSet, Statement statement,
Connection connection) {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
TestSql testSql = new TestSql();
System.out.println("首次使用先創建表");
while (true) {
System.out.println("輸入1-4,進行測試");
System.out.println("1.創建表");
System.out.println("2.插入記錄");
System.out.println("3.刪除記錄");
System.out.println("4.查詢記錄");
int i = scanner.nextInt();
switch (i) {
case 1:
testSql.createTest();break;
case 2:
testSql.insertTest();break;
case 3:
testSql.deleteTest();break;
case 4:
testSql.selectTest();break;
}
}
}
}