1. 程式人生 > >java通過JDBC獲取MySQL的資料實現

java通過JDBC獲取MySQL的資料實現

由慕課網聽之,後簡單的捋了一下,記下來,備後用

要從eclipse中的java程式碼獲取到MySQL資料庫中的資訊,Java提供了JDBC作為橋樑來實現

首先需要在我們的專案中匯入JDBC相關的包

下載:mysql-connector-java-5.0.8-bin.jar檔案

需要將其匯入,可以直接右鍵專案進行匯入,但是當移動專案到其它地方時,該檔案不會隨之移動;另外一種方法是在專案下面新建lib檔案(new—> floder),再將檔案拖到lib裡面,選copy,然後右鍵檔案,Build Path 進行匯入

其次是Java程式碼

如下(我都做了詳細的註釋)

public class DBUtil {

	/*
	 * URL中的127.0.0.1為本機地址,回送地址,因為MySQL服務是在本機上,java程式也在本機上,
	 * imooc為MySQL中一個數據庫,指定後,後面便是對其中的表進行操作
	 * USER是MySQL使用者的使用者名稱,PASSWORD為密碼
	 */
	private static final String URL="jdbc:mysql://127.0.0.1:3306/imooc";
	private static final String USER="root";
	private static final String PASSWORD="23232";
	
	public static void main(String[] args) throws Exception {
		
		//1.載入驅動程式
		/*
		 * 在com.mysql.jdbc.Driver中有一個靜態的方法,new一個Driver,並將其載入到DriverManager中,程式碼如下
		 * static {
                  try {
                        java.sql.DriverManager.registerDriver(new Driver());
                       } catch (SQLException E) {
                           throw new RuntimeException(“Can’t register driver!”);
                       }
                 }
		 * Class.forName()方法初始化指定的類(會執行其中的static...),並返回該類的物件
		 */
		Class.forName("com.mysql.jdbc.Driver");
		
		/*2.獲得資料庫的連線
		 * 在這其中的將URL,USER,PASSWORD傳入DriverManager中的Driver物件(在JDBC中),
		 * 通過JDBC返回一個連線給java的sql
		 */
		Connection con=DriverManager.getConnection(URL, USER, PASSWORD);
		
		//3.通過資料庫的連線操作資料庫,實現增刪改查
		Statement statement=con.createStatement();
		//查詢資料,其中輸入sql語句
		ResultSet rSet=statement.executeQuery("SELECT name,age FROM tabletest");
		
		//rSet.next()返回的是一個布林型別的值,而且將指標指向下一條記錄
		while(rSet.next()){
			/*
			 * 將獲得的資料輸入到控制檯上,注意得到的方法,因為之前查詢時獲得的是兩個值,一個string,一個int,
			 * 使用其中的引數為string的方法,將值得名稱傳進去
			 */
			System.out.println(rSet.getString("name")+","+rSet.getInt("age"));
		}
	}
}

這樣便實現了簡單的連線,獲取資料庫的資訊;

下面再附上操作資料庫的程式碼

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.test.Godess.Godes;
import com.test.jdbcconnect.DBUtil;

public class GoddessMod {

	public void addGoddess(Godes g) throws Exception {
		// 每次對資料庫操作的時候都要建立連線
		Connection connection = DBUtil.getConnect();

		// 下面的3塊是一個完整體系
		// (1) sql語句字串,並沒有實際的賦值,這樣可以抽象化
		// 這裡並沒有給id賦值,因為在表中id為主鍵,且設為自動遞增
		String sql = "" + "INSERT INTO tabletest" + "(name,age,birthday) VALUES(" + "?,?,?)";
		// (2)預處理,類似於sql中的儲存過程
		PreparedStatement pres = connection.prepareStatement(sql);
		// (3)賦值
		pres.setString(1, g.getName());
		pres.setInt(2, g.getAge());
		pres.setDate(3, new Date(g.getBirthday().getTime()));
		// 執行,增,刪,改 ,用下面的語句,查用executeQuery();
		pres.execute();

	}

	public void updateGoddess(Godes goddess) throws Exception {
		Connection connection = DBUtil.getConnect();

		String sql = "UPDATE tabletest SET name=?,age=?,birthday=? WHERE id=?";
		PreparedStatement prem = connection.prepareStatement(sql);
		prem.setString(1, goddess.getName());
		prem.setInt(2, goddess.getAge());
		prem.setDate(3, new Date(goddess.getBirthday().getTime()));
		prem.setInt(4, 1);

		prem.execute();
	}

	public void delGoddess(Integer id) throws SQLException {
		Connection connection = DBUtil.getConnect();

		String sql = "DELETE FROM tabletest WHERE id=?";
		PreparedStatement prem = connection.prepareStatement(sql);
		prem.setInt(1, id);

		prem.execute();
	}

	public List<Godes> query() throws Exception {
		Connection connection = DBUtil.getConnect();
		// 3.通過資料庫的連線操作資料庫,實現增刪改查
		Statement statement = connection.createStatement();
		// 查詢資料,其中輸入sql語句
		ResultSet rSet = statement.executeQuery("SELECT name,age FROM tabletest");

		List<Godes> goddessList = new ArrayList<Godes>();
		Godes goddess;
		// rSet.next()返回的是一個布林型別的值,而且將指標指向下一條記錄
		while (rSet.next()) {
			/*
			 * 將獲得的資料輸入到控制檯上,注意得到的方法,因為之前查詢時獲得的是兩個值,一個string,一個int,
			 * 使用其中的引數為string的方法,將值得名稱傳進去
			 */
			// System.out.println(rSet.getString("name")+","+rSet.getInt("age"));
			goddess = new Godes();
			goddess.setName(rSet.getString("name"));
			goddess.setAge(rSet.getInt("age"));
			goddessList.add(goddess);
		}
		return goddessList;
	}

	public List<Godes> queryForContdition(List<Map<String, Object>> perm) throws Exception {

		Connection connection = DBUtil.getConnect();
		// 使用stringBuilder不同於字串(每次修改都會建立開銷),對於多次修改的,用StringBuilder好
		StringBuilder sql = new StringBuilder();
		sql.append("SELECT * FROM tabletest WHERE 1=1 ");
		// sql.append(" AND "+"name"+"="+"'Tony'");
		for (Map<String, Object> map : perm) {
			sql.append(" AND " + map.get("attr") + " " + map.get("relation") + " " + map.get("value"));
		}
		// 注意與上面查詢的寫法
		// 由於沒有?,可以省略第三步
		PreparedStatement statement = connection.prepareStatement(sql.toString());

		// 這個為查詢,因此不同於其它三種
		ResultSet rSet = statement.executeQuery();

		Godes goddess;
		List<Godes> goddessList = new ArrayList<Godes>();
		while (rSet.next()) {
			goddess = new Godes();
			goddess.setId(rSet.getInt("id"));
			goddess.setName(rSet.getString("name"));
			goddess.setAge(rSet.getInt("age"));
			goddess.setBirthday(rSet.getDate("birthday"));
			goddessList.add(goddess);
		}

		return goddessList;
	}
}


參考