Java進階之JDBC


Java進階之JDBC
一、JDBC初識
JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成
JDBC常用接口:
Connection接口
Statement接口
PreparedStatement接口
ResultSet接口
CallableStatement接口
DriverManager類

二、JDBC驅動安裝
下載JDBC驅動包
mysql官方網站進行下載

配置JDBC驅動
    方式一: 
選中工程右擊->Build Path->Add External Archival->選擇mysql驅動包->Ok
方式二:
把mysql驅動包直接粘貼到工程目錄下->選中jar包右擊->Build Path->Add to BuildPath

驅動加載獲取連接步驟:
1.加載驅動類
  Class.forName("com.mysql.jdbc.Driver");
2.通過地址和用戶名密碼獲取連接
 DriverManager.getConnection(jdbc:mysql://地址:端口/l","root","admin");

三、JDBC增刪查改操作
jdbc增刪改操作
1、獲取連接
2、獲取Statement對象
    Connection.createStatement()
3、整理插入的sql語句字符串
  String sql="sql語句"
4、發送並執行sql語句
 Statement.executeUpdate(sql語句);
5、關閉連接

jdbc查找操作
1、獲取連接
2、獲取Statement對象
    Connection.createStatement()
3、整理查詢的sql語句字符串
  String sql="sql語句"
4、發送並執行sql語句
 ResultSet rs = Statement.executeQuery(sql語句);
5、處理結果集
6、關閉連接

ResultSet接口
對於數據庫查詢操作,ResultSet主要用於接收查詢出來的結果集
常用方法
next、getInt、getDate、getString

四、預編譯對象

預編譯對象
PreparedStatement 接口繼承了Statement 
可以高效的重複執行sql語句
PreparedStatement 實例包含已編譯的 SQL 語句


編寫語法
PreparedStatement pstmt = con.prepareStatement("select * from table_name where name = ?");



五、代碼演示:

package MySqlConnection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

public class ConnectionTest {
	
	public ArrayList<Teacher> list = new ArrayList<Teacher>();

	public static void main(String[] args) {
		ConnectionTest test = new ConnectionTest();
		// test.preInsert();
		test.insert1(76, "ZZZZ", "man", 23, "Studeng", "2017-02-21");
	}

	public void insert() {
		try {
			// 1、獲取連接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.創建StateMent對象
			Statement state = connection.createStatement();
			// 3.整理一條sql數據
			String sql = "INSERT into teacher VALUES (10,'zhouzhou','man',21,'student','2017-02-24');";
			// 4.強這條數據插入到數據庫中
			state.execute(sql);
			// 關閉連接
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void delete() {

		try {
			// 1.獲取連接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.創建StateMent對象
			Statement state = connection.createStatement();
			// 3.整理刪除sql語句
			String sql = "delete from teacher where id=10";
			// 4.發送並執行sql語句
			state.execute(sql);
			// 5.關閉資源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void updata() {
		try {
			// 1.獲取連接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.創建Statement對象
			Statement state = connection.createStatement();
			// 3.正路sql語句
			String sql = "update teacher set name='KeChuang' where id=6;";
			// 4.發送並執行sql語句
			state.execute(sql);
			// 5.關閉資源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void query() {
		try {
			// 1.獲取連接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.創建Statement對象
			Statement state = connection.createStatement();
			// 3.整理sql語句
			String sql = "select * from teacher;";
			// 4.發送並執行sql語句
			ResultSet rs = state.executeQuery(sql);
			while (rs.next()) {
				int id = rs.getInt(1);
				String name = rs.getString(2);
				String gender = rs.getString(3);
				int age = rs.getInt(4);
				String job = rs.getString(5);
				String date = rs.getString(6);
				System.out.println("id: " + id + "   " + "name: " + name + "   gender: " + gender + "   age: " + age
						+ "   job: " + job + "   date: " + date + ": ");
			}
			// 5.關閉資源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void preInsert() {

		try {
			// 1.獲取連接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.創建prepareStatement對象
			PreparedStatement prement = connection
					.prepareStatement("insert into teacher values(278,'ZuoJiang','man',22,'Student','2017-01-11');");
			// 3.發送並執行sql語句
			prement.execute();
			// 4.關閉資源
			prement.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void preInsert(int id, String name, String gender, int age, String job, String date) {

		try {
			// 1.加載驅動
			Class.forName("com.mysql.jdbc.Driver");
			// 2.獲取和數據庫的簡介
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 3.獲取預編譯對象
			PreparedStatement ment = connection
					.prepareStatement("insert into teacher (id,name,gender,age,job,createDate) VALUES (?,?,?,?,?,?);");
			ment.setInt(1, id);
			ment.setString(2, name);
			ment.setString(3, gender);
			ment.setInt(4, age);
			ment.setString(5, job);
			ment.setString(6, date);
			ment.execute();
			// 4.關閉資源
			ment.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void insert1(int id, String name, String gender, int age, String job, String date) {

		try {
			// 1.獲取連接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.創建Statement對象
			Statement state = connection.createStatement();
			// 3.整理一條sql語句
			String sql = "insert into teacher (id,name,gender,age,job,createDate) values (" + id + ",'" + name + "','"
					+ gender + "','" + age + "','" + job + "','" + date + "'" + ");";
			// 4.發送並執行sql語句
			// System.out.println(sql);
			state.execute(sql);
			// 5.關閉資源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void queryAll() {

		try {
			// 1.加載驅動
			Class.forName("com.mysql.jdbc.Driver");
			// 2.獲取連接
			Connection connection = DriverManager.getConnection("jdbc:mydql://localhost:3306/zhou", "root", "zhou");
			Statement state = connection.createStatement();
			// 3.整理sql語句
			String sql = "select * from teacher";
			// 4.發送並執行sql語句
			ResultSet set = state.executeQuery(sql);
			while (set.next()) {
				int id = set.getInt(1);
				String name = set.getString(2);
				String gender = set.getString(3);
				int age = set.getInt(4);
				String job = set.getString(5);
				String date = set.getString(6);
				Teacher t = new Teacher(id, name, gender, age, job, date);
				list.add(t);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


package MySqlConnection;

public class Teacher {
	
	private int id;
	private String name;
	private String gender;
	private int age;
	private String job;
	private String date;
	
	public Teacher(int id, String name, String gender, int age, String job, String date) {
		super();
		this.id = id;
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.job = job;
		this.date = date;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}

}

六、總結

上面的代碼首先的安裝好Mysql數據庫以及加載相應的驅動包;

以前剛接觸JDBC的時候覺得很難,現在把思路整理清楚了,其實也很簡單;

你可能覺得加載驅動那一段長長的代碼可能會有點怕,其實不用緊張,多敲幾遍就好了,看上面,我就敲了好幾遍;

寫程序真的思路很重要啊,不過思路是在你理解了相關的知識之後的;基礎沒打好,學習到後面可能就會喫力;所以,Java基礎一定要學好;可能你覺得你的Java基礎學得不錯了,其實那可能還只是皮毛;

共勉!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章