java(jdbc)

1.JDBC入門

     a.介紹:使用java程序發送sql語句到數據庫服務器端執行,這叫用到了JDBC技術。jdbc是Oracle-          Sun 公司設計的一套專門用于java程序操作數據庫的接口。

     b.使用jdbc發送sql條件

           連接mysql數據庫數據庫主機端口、數據庫、用戶名、數據庫密碼、連接的數據庫。

     c.核心api

         Driver接口: 數據庫驅動程序的接口,所有具體數據庫廠商需要的驅動程序需要實現此接口。

                           Connectionconnect(String url, Properties info)  用于獲取數據庫連接

         Connection接口:與具體的數據庫的連接對象。

                   StatementcreateStatement()    創建一個靜態sql語句對象

                   PreparedStatementprepareStatement(String sql)  創建預編譯的sql語句對象

                  CallableStatementprepareCall(String sql)   創建存儲過程的sql語句對象

        Statement接口:用于執行靜態 SQL 語句

                  intexecuteUpdate(String sql)  執行更新操作的sql語句                                                                     (create/alter/drop) DDL語句

                  (insert/update/delete)DML語句

                  ResultSetexecuteQuery(String sql)  執行查詢操作的sql語句

                  (select)(DQL查詢語句)

         PreparedStatement接口:用于執行預編譯的SQL語句(是Statement的子接口)

                   intexecuteUpdate()  執行更新操作的sql語句

                   ResultSetexecuteQuery()  執行查詢操作的sql語句

         CallableStatement接口:用于執行 SQL 存儲過程的接口(是PreparedStatement子接口)

                    ResultSetexecuteQuery()  執行存儲過程的sql語句

         ResultSet接口:結果集對象。 存儲所有數據庫查詢的結果,用該對象進行數據遍歷。

                      booleannext():把光標移動到下一行。如果下一行有數據,返回true,如果沒有下一行數                      據,返回false。

                     getXXX(列索引|列字段名稱): 獲取字段的數據

      

        public class DriverDemo {

private static String url = "jdbc:mysql://localhost:3306/day20";

    //jdbc協議:mysql協議://主機地址:端口號/需要連接的數據庫名稱

private static String user = "root";

private static String password="root";


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

/**

* java程序連接mysql數據庫

* 1.mysql數據庫的主機地址

* 2.端口號

* 3.用戶名

* 5.密碼

* 6.需要連接的數據庫

* 先使用java程序連接我們的數據庫,需要一個連接對象Connection

*/

//conn1();

//conn2();

conn3();

}


private static void conn3() throws Exception {

//注冊驅動,mysql驅動程序的Driver實現類已經在靜態代碼塊中注冊好了驅動,只需要將              Driver實現類加載到我們的內存中,static代碼塊就會自動執行

//注冊驅動

Class.forName("com.mysql.jdbc.Driver");


//獲取java連接數據庫的對象

Connection conn = DriverManager.getConnection(url, user, password);


//打印這個連接對象

System.out.println(conn);


}


private static void conn2() throws Exception {

//使用驅動管理類,連管理我們的驅動程序,并獲取連接

//1.注冊驅動

//public static void registerDriver(Driver driver)throws SQLException

Driver driver = new com.mysql.jdbc.Driver();

DriverManager.registerDriver(driver);


//獲取連接

//public static Connection getConnection(String url,String user,String password)throws SQLException

Connection conn = DriverManager.getConnection(url, user, password);


//打印這里數據庫連接

System.out.println(conn);

}

//直連

private static void conn1() throws SQLException {

//創建一個驅動類對象Driver

Driver driver = new com.mysql.jdbc.Driver();

//獲取java連接數據庫的連接

//Connection connect(String url, Properties info)throws SQLException

//創建一個properties集合

Properties prop = new Properties();

prop.setProperty("user", user);

prop.setProperty("password", password);

Connection conn = driver.connect(url, prop);

//打印這個連接對象,如果連接對象不為空,就說明我們已經成功獲取到了連接對象

System.out.println(conn);

}


     }

2.Statement對象執行SQL操作

      

        public class Demo {

private static String url = "jdbc:mysql://localhost:3306/day20";

private static String user = "root";

private static String password = "root";


public static void main(String[] args){

Connection conn = null;

Statement stmt = null;

try {

//注冊驅動

Class.forName("com.mysql.jdbc.Driver");


//通過驅動管理類獲取數據庫連接

conn = DriverManager.getConnection(url, user, password);


//創建語句執行者

stmt = conn.createStatement();

//int executeUpdate(String sql)

//throws SQLException執行給定 SQL 語句,

//該語句可能為 INSERT、UPDATE 或 DELETE 語句,或者不返回任何內容的 SQL 語句       (如 SQL DDL 語句)。

String sql = "CREATE TABLE student("+

"id INT,"+

"NAME VARCHAR(20),"+

"age INT"+

");";


//使用語句執行者執行創建的sql語句

int count = stmt.executeUpdate(sql);


//打印一下影響的結果

System.out.println(count);

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException();

}finally{

//釋放資源

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

}


   }

3.執行DML操作

      

        public class Demo2 {

private static String url = "jdbc:mysql://localhost:3306/day20";

private static String user = "root";

private static String password = "root";


public static void main(String[] args) {

//testInsert();//給數據庫添加一條記錄

//testUpdate();//修改數據庫中的一條數據

testDelete();

}


private static void testDelete() {


//需求:將劉德華改為岳云鵬

Connection conn = null;

Statement stmt = null;


try{

//2.獲取連接對象

conn  =JDBCUtil.getConn();

//3.準備sql

String sql = "DELETE FROM student WHERE id=1;";

//4.獲取語句執行者

stmt = conn.createStatement();

//5.發送兵長執行sql

int count = stmt.executeUpdate(sql);

//打印影響的行數

System.out.println(count);


}catch(Exception e){

e.printStackTrace();

throw new RuntimeException();

}finally{

JDBCUtil.close(conn, stmt, null);

}




}


private static void testUpdate() {

//將劉德華改為岳云鵬

Connection conn = null;

Statement stmt = null;


try{

//1.注冊驅動

Class.forName("com.mysql.jdbc.Driver");

//2.獲取連接對象

conn  =DriverManager.getConnection(url, user, password);

//3.準備sql

String sql = "UPDATE student SET NAME='岳云鵬' WHERE id=1;";

//4.獲取語句執行者

stmt = conn.createStatement();

//5.發送兵長執行sql

int count = stmt.executeUpdate(sql);

//打印影響的行數

System.out.println(count);


}catch(Exception e){

e.printStackTrace();

throw new RuntimeException();

}finally{

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


}


private static void testInsert() {

//專門測試添加功能

Connection conn = null;

Statement stmt = null;

try{

//注冊驅動

Class.forName("com.mysql.jdbc.Driver");

//獲取連接

conn = DriverManager.getConnection(url, user, password);

//定義sql

String sql = "INSERT INTO student VALUES(1,'劉德華',50);";

//獲取語句執行者

stmt = conn.createStatement();

//使用語句執行者發送并執行sql語句,并返回影響的行數

int count = stmt.executeUpdate(sql);

System.out.println(count);


}catch(Exception e){

e.printStackTrace();

throw new RuntimeException();

}finally{

//釋放資源

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


}


    }

4.執行DQL查詢操作

     

        public class Demo3 {


public static void main(String[] args) {

//定義一個連接對象和一個語句執行者

Connection conn  =null;

Statement stmt = null;

ResultSet rs = null;

try{

conn = JDBCUtil.getConn();

//定義sql

String sql = "SELECT * FROM student;";

//獲取語句執行者對象

stmt = conn.createStatement();

//執行DQL查詢語句

//ResultSet executeQuery(String sql)

            //throws SQLException執行給定的 SQL 語句,該語句返回單個 ResultSet 對象。

rs = stmt.executeQuery(sql);

//ResultSet是一個結果集

/*//判斷有沒有下一行數據

if (rs.next()) {

//說明有下一行數數據

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}


if (rs.next()) {

//說明有下一行數數據

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}


if (rs.next()) {

//說明有下一行數數據

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}


if (rs.next()) {

//說明有下一行數數據

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}


if (rs.next()) {

//說明有下一行數數據

//使用字段名稱獲取字段的每一個數據

while (rs.next()) {

//當我們使用字段名稱去獲取字段數據的時候,字段名稱是不區分大小寫

System.out.println(rs.getInt("ID")+"--"+rs.getString("NAME")+"--                              "+rs.getInt("AGE"));

}




}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtil.close(conn, stmt, rs);

}


}


    }

5.JDBC工具類的抽取

     

        public class JDBCUtil {

private static String url = "jdbc:mysql://localhost:3306/day20";

private static String user = "root";

private static String password = "root";


static{

//隨著類的加載而夾在

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


//獲取連接

public static Connection getConn(){

//注冊驅動

try {

Connection conn = DriverManager.getConnection(url, user, password);

return conn;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

throw new RuntimeException();

}


}



//釋放資源

public static void close(Connection conn,Statement stmt,ResultSet rs){

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


if (rs!=null) {

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


    }

來源:itnose

上一篇: Linux學習之安裝jdk

下一篇: JDBC問答題

分享到: 更多
旺彩预测电脑版下载 捕鱼达人2最老版本 炸金花安卓版 牌九游戏下载 抢庄牛牛技巧规律 双色球模拟选号投注 后三包胆看号 天津时时开奖官方 赚钱的人怎么玩时时彩 后一计划软件下载 好运来快三计划软件 哪个棋牌有二人斗地主 排列三组六投注技巧 135888平肖两期开一期 腾讯网游戏 游戏规则牌