JDBC連接mysql實現增刪改查

一、JDBC簡介
JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序,同時,JDBC也是個商標名。
簡單地說,JDBC 可做三件事:與數據庫建立連接、發送 操作數據庫的語句並處理結果。
二、準備工作

  • 導入對應jar包
    使用JDBC需要導入對應的jar包。具體數據庫與對應jar包對應關係如下圖所示:
    數據庫與對應jar包
    另附:各種數據庫對應的驅動類名和URL格式
    數據庫與對應驅動及url
  • 在eclipse中導入jar方法爲:在項目上單擊右鍵選擇“Build Path"——“configure Build Path···”,在Libraries中單擊"Add External JARs…",選擇所需要的jar包,之後單擊“OK”退出即導入了所需jar包。
    導包
    三、使用JDBC操作數據庫
  • 1.建立實體類
    這樣做主要是爲了便於操作和接口定義,是非必須的。
public class Student {
	
	private String id;
	private String name;
	private String sex;
	private String age;
	
	public Student(String id,String name,String sex,String age){
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}
	
	
	

}
  • 2.連接數據庫
public class MyConnect {
	
	public static Connection getConn(){
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/myjdbc";
		String user = "user";
		String password = "password";
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	public static Integer getAll(){
		Connection conn = getConn();
		String sql = "select * from student_info";
		PreparedStatement pst;
		try {
			pst = (PreparedStatement) conn.prepareStatement(sql);
			ResultSet rs = pst.executeQuery();
			int amount = rs.getMetaData().getColumnCount();
			while(rs.next()){
				for(int i = 1;i < amount + 1;i++){
					System.out.print(rs.getString(i) + "\t");
				}
			}
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static int insert(Student student){
		Connection conn = getConn();
		String sql = "INSERT student_info (id,name,sex,age) VALUES(?,?,?,?)";
		PreparedStatement pst;
		int i = 0;
		try {
			pst = (PreparedStatement) conn.prepareStatement(sql);
			pst.setString(1, student.getId());
			pst.setString(2, student.getName());
			pst.setString(3, student.getSex());
			pst.setString(4,student.getAge());
			i = pst.executeUpdate();
			pst.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return i;
	}
	
	public static int delet(Student student){
		Connection conn = getConn();
		String sql = "DELETE FROM student_info where student_info.id = '" + student.getId() + "'";
		PreparedStatement pst;
		int i = 0;
		try {
			pst = (PreparedStatement) conn.prepareStatement(sql);
			i = pst.executeUpdate();
			pst.close();
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return i;
	}
		

	public static void main(String[] args) {
		System.out.println("插入前數據爲:");
		MyConnect.getAll();
		MyConnect.insert(new Student("951", "王五", "男", "97"));
		System.out.println("插入後數據爲:");
		MyConnect.getAll();
		System.out.println("刪除後數據爲:");
		MyConnect.delet(new Student("951", "王五", "男", "97"));
		MyConnect.getAll();

	}


	

}
  • 代碼分析
    在上述對數據庫進行增刪改查的過程中,可以發現其共性部分,即通用的流程:

(1)創建Connection對象、SQL查詢命令字符串;

(2)對Connection對象傳入SQL查詢命令,獲得PreparedStatement對象;

(3)對PreparedStatement對象執行executeUpdate()或executeQurey()獲得結果;

(4)先後關閉PreparedStatement對象和Connection對象。

可見,使用JDBC時,最常打交道的是Connection、PreparedStatement這兩個類,以及select中的ResultSet類。查閱Java API手冊可以瞭解其具體的意義和方法。
  下面引用的Java API的資料出自http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/index.html。
  
java.sql
接口 Connection

所有超級接口:
    Wrapper

public interface Connectionextends Wrapper

 

與特定數據庫的連接(會話)。在連接上下文中執行 SQL 語句並返回結果。

Connection 對象的數據庫能夠提供描述其表、所支持的 SQL 語法、存儲過程、此連接功能等等的信息。此信息是使用 getMetaData 方法獲得的。

PreparedStatemnt

java.sql 
接口 PreparedStatement

所有超級接口:
    Statement, Wrapper

所有已知子接口:
    CallableStatement

public interface PreparedStatementextends Statement

表示預編譯的 SQL 語句的對象。

SQL 語句被預編譯並存儲在 PreparedStatement 對象中。然後可以使用此對象多次高效地執行該語句。

 

常用方法

 boolean  execute()

          在此 PreparedStatement 對象中執行 SQL 語句,該語句可以是任何種類的 SQL 語句。

 ResultSet  executeQuery()

          在此 PreparedStatement 對象中執行 SQL 查詢,並返回該查詢生成的 ResultSet 對象。

 int  executeUpdate()

          在此 PreparedStatement 對象中執行 SQL 語句,該語句必須是一個 SQL 數據操作語言(Data Manipulation Language,DML)語句,比如 INSERT、UPDATE 或 DELETE 語句;或者是無返回內容的 SQL 語句,比如 DDL 語句。

ResultSet

  
java.sql 
接口 ResultSet

所有超級接口:
    Wrapper

所有已知子接口:
    CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet

public interface ResultSetextends Wrapper

表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章