分享:JDBC 與 Java數據庫訪問體系之重點歸納

JDBC體系

JDBC:Java Database Connectivity

分享:JDBC 與 Java數據庫訪問體系之重點歸納

SQLite這種也是支持的,但Java8開始不支持ODBC了。

關鍵的類或接口

  • Connection 連接
  • Statement 語句 或 PreparedStatement
  • ResultSet 結果集 → 可以用 next() 方法來遍歷所有的記錄

java.sql

分享:JDBC 與 Java數據庫訪問體系之重點歸納

加載驅動及連接數據庫

加載驅動程序:

Class.forName("org.sqlite.JDBC");


得到與數據庫的連接 :

String connString = "jdbc:sqlite:d:/test3.db";

Connection conn = DriverManager.getConnection(connString);


執行語句

得到一個Statement對象 :

Statement stat = conn.createStatement();

1

執行非查詢:

stat.executeUpdate("delete from DemoTable;");


查詢數據庫得到記錄集:

ResultSet rs = stat.executeQuery("select * from people;");


結果集遍歷

System.out.println("Display all results:");

while(rs.next()) {

int theInt= rs.getInt("test_id");

String str = rs.getString("test_val");

System.out.println("\\ttest_id= " + theInt + "\\tstr = " + str);

}


PreparedStatement

PreparedStatement表示經過編譯的語句~

如果多次使用同樣的語句,執行速度略快一些(聯想到native沒)

可以方便地加上參數

更安全,避免sql注入攻擊

補充——JDBC連接SQLite數據庫

import java.sql.*;

public class JDBC4Sqlite {

public static void main(String[] args) throws Exception {

Class.forName("org.sqlite.JDBC");

String connString = "jdbc:sqlite:d:/test3.db";

Connection conn = DriverManager.getConnection(connString);

conn.setAutoCommit(false);

Statement stat = conn.createStatement();

//stat.executeUpdate("drop table if exists people;");

stat.executeUpdate("create table if not exists people (id char(10), name char(20), age int, gender bit ) ;");

stat.executeUpdate("insert into people values ('001', 'Tom', 18, 1);");

stat.executeUpdate("insert into people values ('002', 'Marry', 20, 0);");

stat.executeUpdate("insert into people values ('003', 'Peter', 25, 1);");

stat.executeUpdate("update people set age=age+1 whre id='003';");

conn.commit();

String sql = "select * from people;";

ResultSet rs = stat.executeQuery(sql);

while (rs.next()) {

String name = rs.getString("name");

int age = rs.getString("age");

boolean gender = rs.getBoolean(4);

System.out.printf("name = %s; occupation = %s\\n",

name, occupation);

}

rs.close();

conn.close();

}

}


分享到:


相關文章: