1. 程式人生 > >JavaWeb學習筆記-JDBC操作(2)[資料庫的更新與查詢]

JavaWeb學習筆記-JDBC操作(2)[資料庫的更新與查詢]

在JDBC操作(1)文章中介紹瞭如何通過JDBC驅動連線mysql資料庫。本文要介紹通過Java程式執行資料庫的更新與查詢語句。

首先要完成前期操作,在資料庫'mydb'中建立表格'users'。

CREATE TABLE users(
u_id INT PRIMARY KEY AUTO_INCREMENT,
u_name VARCHAR(8) NOT NULL,
u_age INT NOT NULL,
u_sex VARCHAR(2) NOT NULL,
u_height FLOAT(4,1) NOT NULL,
birthday DATE NOT NULL
)ENGINE=INNODB DEFAULT CHARSET = utf8;
為了充分體現Java面向物件的特點,首先定義一個Jdbc類,之後就可以通過建立Jdbc物件來訪問mysql資料庫。
class Jdbc {
	private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
	private static final String DB_URL = "jdbc:mysql://localhost:3306/";
	private static final String USER = "root";
	private static final String PASS = "****";
	private Connection connection;
	private Statement statement;
	private String dbName;// 所要連線的資料庫名稱

	public Jdbc(String dbName) {
		this.dbName = dbName;
		try {
			Class.forName(JDBC_DRIVER);
			connection = DriverManager.getConnection(DB_URL + this.dbName, USER, PASS);
			statement = connection.createStatement();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public Statement getStatement() {
		return statement;
	}

	public String getDbName() {
		return dbName;
	}

	public void close() {
		try {
			if (statement != null)
				statement.close();
		} catch (Exception e) {
			;
		}
		try {
			if (connection != null)
				connection.close();
		} catch (Exception e) {
			;
		}
	}

}

Statement介面中的 int executeUpdate(String sql) throws SQLException函式可執行INSERT,UPDATE,DELETE等sql語句。

一、執行資料庫插入操作。

void accessDatabaseInsert() {
		Jdbc myJdbc = new Jdbc("mydb");
		try {
			String sql = "INSERT INTO users(u_name,u_age,u_sex,u_height,birthday)VALUES"
					+ "('趙陽','22','男','183.5','1994-08-17'),"
					+ "('Jhone','21','女','175.0','1994-04-06')";
			int count = myJdbc.getStatement().executeUpdate(sql);
			System.out.println(count + "條記錄成功插入");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			myJdbc.close();
		}
	}
執行插入操作後,users表中新增了2條資料。


二、執行資料庫修改操作。

void accessDatabaseUpdate() {
		Jdbc myJdbc = new Jdbc("mydb");
		try {
			String sql = "UPDATE users SET birthday='1995-04-06' WHERE u_name='Jhone'";
			int count = myJdbc.getStatement().executeUpdate(sql);
			System.out.println(count+"成功修改");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			myJdbc.close();
		}
	}

執行修改操作後,1條記錄被修改。u_name為'Jhone'記錄的birthday屬性值變為'1995-04-06'。


三、執行資料庫刪除操作。

void accessDatabaseDelete() {
		Jdbc myJdbc =new Jdbc("mydb");
		try{
			int id = 1;
			String sql="DELETE FROM users WHERE u_id="+id;
			int count = myJdbc.getStatement().executeUpdate(sql);
			System.out.println(count+"條記錄被刪除");
		}
		catch(Exception e) {
			e.printStackTrace();
		}
		finally {
			myJdbc.close();
		}
	}

執行刪除操作後,1條記錄被刪除。users表中u_id為1的記錄被刪除,對比上次結果,users表中只剩下一條記錄。


四、執行資料庫查詢操作。

用Statement中的ResultSet executeQuery(String sql)函式來執行查詢操作。ReseltSet介面用於接收用JDBC查詢資料庫得到的所有記錄。ReseltSet中常用的方法有boolean next(),指向下一行記錄。int getInt(int columnIndex)用屬性的在資料表中的編號來獲得整形屬性值,int getInt(String columnName)用屬性的名稱來獲得整形屬性值。同理還有,float getFloat()、String getString()、Date getDate()。

void accessDatabaseQuery() {
		Jdbc myJdbc = new Jdbc("mydb");
		ResultSet result = null;
		String sql = "SELECT u_id,u_name,u_age,u_sex,u_height,birthday FROM users";
		try {
			result = myJdbc.getStatement().executeQuery(sql);
			while (result.next()) {
				int id = result.getInt("u_id");
				String name = result.getString("u_name");
				int age = result.getInt("u_age");
				String sex = result.getString("u_sex");
				float height = result.getFloat("u_height");
				java.util.Date birthday = result.getDate("birthday");
				System.out.print("u_id: " + id);
				System.out.print(" ,u_name: " + name);
				System.out.print(" ,u_age: " + age);
				System.out.print(" ,u_sex: " + sex);
				System.out.print(" ,u_height: " + height);
				System.out.println(" ,birthday: " + birthday);
			}
			result.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			myJdbc.close();
		}
	}

執行結果如下:


本文就介紹到這裡。如有錯誤歡迎批評指正,謝謝!