+ All Categories
Home > Documents > JDBC Basic

JDBC Basic

Date post: 04-Apr-2018
Category:
Upload: tran-van-hoa
View: 231 times
Download: 0 times
Share this document with a friend

of 22

Transcript
  • 7/29/2019 JDBC Basic

    1/22

    11/7/2012

    1

    LP TRNH NG DNG JAVA

    Nguyn Hong Anh

    JDBC C BN

    (JAVA DATABASE CONNECTIVITY)

    Ni dung

    Giithiu JDBC

    Mts Class v Interface ca JDBC API thng dng

    Mtskthutcbnsdng JDBC

    ng k driver, M & ngktnicsdliu

    Thchinly, xa, cpnht, thm dliu

    ExecuteBath

    X l li v ngoil

    Transaction

    Gi Store Procedure

    2

  • 7/29/2019 JDBC Basic

    2/22

    11/7/2012

    2

    GIITHIU JDBC

    3

    JDBC

    JDBC (Java database connectivity) cung cp cho javadeveloper tp cc interface chun dng truy xutdliu quan h.

    JDBC c pht trinbi JavaSoft

    4

  • 7/29/2019 JDBC Basic

    3/22

    11/7/2012

    3

    Kin trc JDBC Khi lm vic vi JDBD, java developer s lm vic

    nh nhau ivi cc hcsdliu khc nhau.

    Java developer khng phthuc vo mthcsdliucth no.

    Java developer khng cnphi quan tm ns khcnhau khi giao tipvi cc HQTCSDL khc nhau.

    5

    Kin trc JDBC

    6

    Java Application

    JDBC Driver Manager

    JDBC Drivers

    Database

    JDBC API

    JDBC Driver API

  • 7/29/2019 JDBC Basic

    4/22

    11/7/2012

    4

    Kin trc JDBC

    7

    Java Application

    JDBC Driver Manager

    SQLServerDriver

    MySQLDriver

    OracleDriver

    ODBC BridgeDriver

    DB2Driver

    ODBC BridgeManager

    AccessDriver

    dBaseDriver

    Access dBase SQL Server MySQL Oracle DB2

    JDBC

    Java Application

    1. Mktni

    2. Gi SQL

    3. Rt trch dliu

    4.ngktni

    DBMS

    1. To phin ktni

    2. Thc thi SQL

    3. Trktqu

    4.ng phin ktni

    8

  • 7/29/2019 JDBC Basic

    5/22

    11/7/2012

    5

    JDBC API

    9

    JDBC Interfaces

    Class v Interface ca JDBC API thuc gijava.sql

    DriverManager dng np cc driver v to

    Connection ncsdliu. Driver: Driver ca c s d liu, mi JDBC Driver

    u ci tli Interface ny.

    Connection :Thit lpmt Connection n c s dliu v cho php to cc Statement .

    Statement: Gnktvimt connection ncsdliu v cho php thc thi cc cu lnh SQL.CallableStatement tng t Statement nhng pdng cho Store procedures.

    10

  • 7/29/2019 JDBC Basic

    6/22

    11/7/2012

    6

    JDBC API

    PreparedStatement: Tngtnh Statement nhngp dng cho Precompiled SQL.

    ResultSet: Cung cp thng tin rt trch tcsdliu , cho php truy xut cc dng dliu.

    ResultSetMetaData: Cung cp cc thng tin nhkiudliu v cc thuc tnh trong Resultset.

    DatabaseMetaData: Cung cp cc thng tin cacsdliuktni.

    SQLException: Cung cp thng tin cc ngoilxy rakhi tng tc vicsdliu.

    11

    JDBC API

    12

    DriverManager

    Connection Connection Connection

    Statement Statement

    ResultSet ResultSet

  • 7/29/2019 JDBC Basic

    7/22

    11/7/2012

    7

    MT S K THUT C BNSDNG JDBC

    13

    Mtskthutcbnsdng JDBC

    ng k driver

    M & ngktnicsdliu

    Thchinly, xa, cpnht, thm dliu

    ExecuteBath

    X l li v ngoil

    Transaction

    Gi Store Procedure

    14

  • 7/29/2019 JDBC Basic

    8/22

    11/7/2012

    8

    ng k Driver - MySQL Bc 1: Thm thvin JDBC Driver vo ngdng

    Bc 2:ng k Driver - MySQL

    Cch 1: Class.forName :

    Class.forName(org.gjt.mm.mysql.Driver);

    Cch 2: DriverManager.registerDriver

    Driver driver = new org.gjt.mm.mysql.Driver()

    DriverManager.registerDriver(driver);

    15

    M & ngktnicsdliu

    itng Connection ctot getConnection ca DriverManager

    Connection getConnection (String url);

    Connection getConnection (String url, String user, String password); Connection getConnection (String url, java.util.Properties info);

    16

  • 7/29/2019 JDBC Basic

    9/22

    11/7/2012

    9

    Mktnicsdliu - MySQL

    17

    JDBC

    Java

    Application

    MYSQL

    DBMS

    QLNV

    Port 3306

    URL jdbc:mysql://localhost:3306/BookOnline

    Domain localhost

    Username root

    Password root

    Username root

    Password root

    Driver MySQL JDBC Driver

    Csdliu BookOnline

    18

    MaDanhMuc:Auto Increment

  • 7/29/2019 JDBC Basic

    10/22

    11/7/2012

    10

    M & ngktnicsdliu - MySQL

    19

    12

    34

    56

    78

    91011

    1213

    1415

    1617

    1819

    20

    importjava.sql.Connection; importjava.sql.Driver;importjava.sql.DriverManager; importjava.sql.SQLException;

    importjava.util.Properties;publicclass TestJDBC {

    publicstaticvoidmain(String[] args) {try {

    Driver driver = new org.gjt.mm.mysql.Driver();DriverManager.registerDriver(driver);

    String conString="jdbc:mysql://localhost:3306/BookOnline";Properties info = new Properties();info.setProperty("characterEncoding", "utf8");

    info.setProperty("user", "root");info.setProperty("password", "root");

    Connection connection =DriverManager.getConnection(conString, info);

    . . .connection.close();

    } catch (SQLException ex) { System.out.println(ex);}}

    }

    Cc cu lnh SQL

    SELECT : Truy vndliutbng

    DELETE : Xa dliutbng

    UPDATE : Cpnhtdliu vo bng

    INSERT : Thm dliu vo bng

    20

  • 7/29/2019 JDBC Basic

    11/22

    11/7/2012

    11

    To v thc thi cc cu lnh SQL Statementstatement = connection.createStatement() ;

    ResultSet executeQuery (String sql)

    int executeUpdate (String sql)

    boolean execute (String sql)

    21

    Lydliutbng

    22

    Row

    Result Set

    rs.next()

    ResultSet executeQuery (String sql)

  • 7/29/2019 JDBC Basic

    12/22

    11/7/2012

    12

    Lydliutbng - DanhMuc

    23

    12

    34

    56

    78

    910

    1112

    . . .Statement statement = connection.createStatement();

    String sql = SELECT * FROM DanhMuc;ResultSet rs = statement.executeQuery(sql);

    while (rs.next()){int maDanhMuc = rs.getInt(MaDanhMuc);String tenDanhMuc = rs.getString(tenDanhMuc);System.out.print(maDanhMuc+ );System.out.println(tenDanhMuc);

    }

    connection.close();

    . . .

    Lydliutbng - Sach

    24

    123

    45

    67

    89

    1011

    1213

    1415

    . . .Statement statement = connection.createStatement();String sql = Select * From Sach Where MaDanhMuc = 1;ResultSet rs = statement.executeQuery(sql);while (rs.next()){

    String maSach = rs.getString(MaSach);String tenSach = rs.getString(TenSach);Double giaBan= rs.getDouble(GiaBan);String soLuong = rs.getInt(SoLuong);int maDanhMuc = rs.getInt(maDanhMuc);

    System.out.println(. . .);}

    Connection.close();

    . . .

  • 7/29/2019 JDBC Basic

    13/22

    11/7/2012

    13

    Xa dliu - DanhMuc

    25

    12

    34

    56

    78

    910

    1112

    . . .Statement statement = connection.createStatement();

    String sql = DELETE FROM DANHMUC WHERE MADANHMUC = 1;int n = statement.executeUpdate (sql);

    if (n == 1){System.out.println(Mt danh mcc xa);

    }else{System.out.println(Li);

    }connection.close();

    . . .

    Xa dliu - Sach

    26

    123

    45

    67

    89

    1011

    12

    . . .Statement statement = connection.createStatement();String sql = DELETE FROM SACH WHERE MADANHMUC = 1;int n = statement.executeUpdate (sql);if (n >= 1){

    System.out.println(n + Sch c xa);}else{

    System.out.println(Li);}

    connection.close();

    . . .

  • 7/29/2019 JDBC Basic

    14/22

    11/7/2012

    14

    Cpnhtdliu - DanhMuc

    27

    12

    34

    56

    78

    910

    1112

    131415

    . . .int maDanhMuc = . . .

    String tenDanhMuc = . . .Statement statement = connection.createStatement();

    String sql = String.format(UPDATE DANHMUCSET TENDANHMUC = %sWHERE MADANHMUC= %d,

    maDanhMuc, tenDanhMuc);

    int n = statement.executeUpdate (sql);if (n == 1){

    System.out.println(Cpnht thnh cng);}else{

    System.out.println(Li);}connection.close();

    . . .

    Cpnhtdliu - Sach

    28

    123

    45

    67

    89

    1011

    1213

    141516

    1718

    . . .String maSach = . . .double giaBan = . . .

    int soLuong = . . .Statement statement = connection.createStatement();

    String sql = String.format(UPDATE SACHSET GIABAN = %f,

    SOLUONG = %dWHERE MASACH = %s,

    giaBan, soLuong, maSach);int n = statement.executeUpdate (sql);

    if (n == 1){System.out.println(Cpnht thnh cng);

    }else{System.out.println(Li);

    }

    connection.close();

    . . .

  • 7/29/2019 JDBC Basic

    15/22

    11/7/2012

    15

    Thm dliu - Sach

    29

    12

    34

    56

    78

    910

    1112

    131415

    1617

    18

    . . .String maSach = . . .

    String tenSach = . . .double giaBan = . . .

    int soLuong = . . .int maDanhMuc = . . .

    Statement statement = connection.createStatement();String sql = String.format(INSERT INTO SACH (MaSach, TenSach,GiaBan, SoLuong, MaDanhMuc) VALUES(%s, %s, %f, %d, %d),

    maSach, tenSach, giaBan, soLuong, maDanhMuc);

    int n = statement.executeUpdate (sql);if (n == 1){

    System.out.println(Thm sch thnh cng);}else{

    System.out.println(Li);}connection.close();

    . . .

    Thm dliu - DanhMuc

    30

    123

    45

    67

    89

    1011

    1213

    . . .String tenDanhMuc = . . .Statement statement = connection.createStatement();

    String sql = String.format(INSERT INTO DANHMUC (TENDANHMUC)VALUES(%s),tenDanhMuc);int n = statement.executeUpdate (sql);if (n == 1){

    System.out.println(Thm danh mc thnh cng);}else{

    System.out.println(Li);}

    connection.close();

    . . .

  • 7/29/2019 JDBC Basic

    16/22

    11/7/2012

    16

    Thm dliu - DanhMuc

    31

    12

    34

    56

    78

    910

    1112

    1314

    . . .String tenDanhMuc = "C++";

    String sql= String.format("INSERT INTO DANHMUC(TENDANHMUC)

    VALUES (%s)", tenDanhMuc);int n=stm.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);if(n>0){

    System.out.println("Thm thnh cng");ResultSet rs=statement.getGeneratedKeys();

    if(rs.next()){int maDanhMuc = rs.getInt(1);

    System.out.println("M danh mcva thm: "+maDanhMuc);}

    }connection.close();

    Thm dliu - DanhMuc

    32

    123

    45

    67

    89

    1011

    1213

    141516

    1718

    19

    . . .String [] tenDanhMucs = {"C++", "C#", "Java"};String sql="INSERT INTO DANHMUC(TENDANHMUC) VALUES ";

    for(int i=0; i

  • 7/29/2019 JDBC Basic

    17/22

    11/7/2012

    17

    ExecuteBath

    33

    12

    34

    56

    78

    910

    11

    . . .String sql1="INSERT INTO DANHMUC(TENDANHMUC) VALUES('Java')";

    String sql2="INSERT INTO DANHMUC(TENDANHMUC) VALUES('PHP')";String sql3="UPDATE DANHMUC SET TENDANHMUC='C' WHERE

    MADANHMUC=43";Statement statement=connection.createStatement();

    statement.addBatch(sql1);statement.addBatch(sql2);

    statement.addBatch(sql3);int [] n = statement.executeBatch();

    . . .

    X l ngoil

    34

    123

    45

    67

    89

    1011

    1213

    141516

    1718

    19

    try {Driver driver = new org.gjt.mm.mysql.Driver();DriverManager.registerDriver(driver);

    String cs = . . .Properties info = new Properties();

    . . .Connection connect =DriverManager.getConnection( cs, info);

    try{Statement statement=connection.createStatement();

    . . .}catch (SQLException ex){

    //X l li}finally{

    //ngktniconnection.close();

    }

    } catch (SQLException ex) {//X l li

    }

  • 7/29/2019 JDBC Basic

    18/22

    11/7/2012

    18

    PreparedStatement

    35

    12

    34

    56

    78

    910

    1112

    131415

    1617

    1819

    . . .String maSach = . . ; String tenSach = . . ;

    double giaBan = . . ; int soLuong = . . .; int maDanhMuc = . . .PreparedStatement statement = connection.prepareStatement();

    String sql = INSERT INTO SACH (MaSach, TenSach, GiaBan,SoLuong, MaDanhMuc) VALUES(?,?,?,?,?);statement.setString (1, maSach);statement.setString (2, tenSach);

    statement.setDouble (3, giaBan);statement.setInt (4, soLuong);

    statement.setInt (5, maDanhMuc);int n = statement.executeUpdate (sql);

    if (n == 1){System.out.println(Thm sch thnh cng);

    }else{

    System.out.println(Li);}

    connection.close();

    . . .

    Sdng Transaction

    36

    123

    45

    67

    89

    1011

    1213

    141516

    1718

    19

    try {String sql1= insert/delete/update . . .String sql2= insert/delete/update . . .

    Connection con =DriverManager.getConnection( cs, info);try{

    con .setAutoCommit(false);Statement statement1= con.createStatement();

    Statement statement2= con.createStatement();statement1.executeUpdate(sql1);

    statement2.executeUpdate(sql2);con.commit();

    }catch (SQLException ex){con.rollBack();

    }finally{con.close();

    }

    } catch (SQLException ex) {//X l li

    }

  • 7/29/2019 JDBC Basic

    19/22

    11/7/2012

    19

    Sdng Transaction

    37

    12

    34

    56

    78

    910

    1112

    131415

    1617

    1819

    String sql1= insert/delete/update . . .String sql2= insert/delete/update . . .

    Connection con =DriverManager.getConnection( cs, info);try{

    con .setAutoCommit(false);Statement statement1= con.createStatement();

    Statement statement2= con.createStatement();statement1.executeUpdate(sql1);

    statement2.executeUpdate(sql2);if(iukin commit){

    con.commit();}else{

    con.rollBack();}

    }catch (SQLException ex){

    //X l li}finally{

    con.close();}

    Sdng Transaction

    38

    12345

    67891011121314151617181920

    String sql1= insert/delete/update . . .String sql2= insert/delete/update . . .Connection con =DriverManager.getConnection( cs, info);try{

    con.setAutoCommit(false);

    Statement statement1= con.createStatement();Statement statement2= con.createStatement();

    Savepoint save1 = con.setSavepoint();statement1.executeUpdate(sql1);statement2.executeUpdate(sql2);if(iukin commit){

    con.commit();}else{

    con.rollBack(save1);}

    }catch (SQLException ex){//X l li

    }finally{con.close();

    }

  • 7/29/2019 JDBC Basic

    20/22

    11/7/2012

    20

    CallableStatement - X l Store Procedure

    39

    Store Procedure - MySQL

    40

    1

    23

    45

    67

    89

    DELIMITER$$

    CREATE PROCEDURE spThemDanhMuc (in tenDanhMuc VARCHAR (45)

    )BEGIN

    INSERT INTO DANHMUC(TENDANHMUC)VALUES (tenDanhMuc);

    SELECT LAST_INSERT_ID();END

    1

    234

    56

    78

    910

    String tenDanhMuc = "C++";

    CallableStatement statement =connection.prepareCall("{call spThemDanhMuc(?)}");

    statement.setString(1, tenDanhMuc);

    statement.execute();ResultSet rs = statement.getResultSet();

    if (rs.next()) {int maDanhMuc = rs.getInt(1);

    System.out.println(maDanhMuc);}

  • 7/29/2019 JDBC Basic

    21/22

    11/7/2012

    21

    Store Procedure - MySQL

    41

    12

    34

    56

    789

    DELIMITER$$CREATE PROCEDURE spThemDanhMuc ( intenDanhMuc VARCHAR (45),

    out maDanhMuc int)

    BEGININSERT INTO DANHMUC(TENDANHMUC) VALUES (tenDanhMuc);SET maDanhMuc = LAST_INSERT_ID();

    END

    1

    23

    45

    67

    8

    String tenDanhMuc = "C++";

    CallableStatement statement =connection.prepareCall("{call spThemDanhMuc (?, ?)}");

    statement.setString(1, tenDanhMuc);statement.registerOutParameter(2,Types.INTEGER);

    statement.execute();int maDanhMuc = statement.getInt(2);

    System.out.println(maDanhMuc);

    TI LIU THAM KHO

    42

  • 7/29/2019 JDBC Basic

    22/22

    11/7/2012

    Ti liu tham kho Nguyn Hong Anh, Tp slide bi ging v video mn

    Lp Trnh Java, H KHTN, 2010

    http://download.oracle.com/javase/tutorial/jdbc/basics/

    , 2011

    43

    HI V P

    44


Recommended