JDBC實現數據庫的增刪改查


本文主要講解:
html

  1. JDBC的概念java

  2. JDBC的原理mysql

  3. 建立用於測試的數據庫sql

  4. 使用JDBC操做數據庫數據庫

  5. 思考與分析
    api


  1. 關於JDBC
    oracle

JDBCJava DataBase Connectivity,java數據庫鏈接)是一種用於執行SQL語句的Java APIJDBCJava訪問數據庫的標準規範,能夠爲不一樣的關係型數據庫提供統一訪問,它由一組用Java語言編寫的接口和類組成。app

2.JDBC原理:ide

JDBC說白了就是一套AIP接口,一套規範.而後各大數據庫的驅動都實現並遵照了這套接口.測試


  3.準備數據庫:


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test              |

+--------------------+

4 rows in set (0.00 sec)

 

mysql> create database xinsz08;
 
mysql> use xinsz08;
Database changed
mysql> create table category(
   -> cid int primary key auto_increment,
   -> cname varchar(100)
   -> );
Query OK, 0 rows affected (0.36 sec)
 
mysql>
mysql> set names gbk;
Query OK, 0 rows affected (0.27 sec)
 
mysql> INSERT INTO category (cname)VALUES('家電');
Query OK, 1 row affected (0.08 sec)
 
mysql> INSERT INTO category (cname)VALUES('服飾');
Query OK, 1 row affected (0.03 sec)
 
mysql> INSERT INTO category (cname)VALUES('化妝品');
Query OK, 1 row affected (0.03 sec)
 
mysql> select * from category;
+-----+--------+
| cid | cname  |
+-----+--------+
|   1| 家電      |
|   2| 服飾       |
|   3| 化妝品     |
+-----+--------+
3 rows in set (0.00 sec)

 

     導入驅動包

建立lib目錄,用於存放當前項目須要的全部jar包

選擇jar包,右鍵執行build path / Add to Build Path


 

4.使用JDBC實現數據庫增刪改查的步驟:

  • 註冊驅動

  • 得到鏈接

  • 得到執行sql語句的對象

  • 執行SQL語句,並返回結果

  • 處理結果

  • 釋放資源

 

 

代碼示例1:

使用JDBC插入數據到數據庫:


package cn.xinsz.boke01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
publicclass demo1 {
    publicstaticvoid main(String[] args) throws Exception {
       Class.forName("com.mysql.jdbc.Driver");
       String url = "jdbc:mysql://localhost:3306/xinsz08";
       String user="root";
       String password="root";
       Connection conn = DriverManager.getConnection(url,user,password);
       
       Statement stat = conn.createStatement();
       String sql="insert into category (cname)values('玩具')";
       introw=stat.executeUpdate(sql);
       System.out.println(row);
       stat.close();
       conn.close();
    }
 
}

 

mysql> select * from category;

+-----+--------+

| cid | cname  |

+-----+--------+

|   1| 家電      |

|   2| 服飾       |

|   3| 化妝品     |

|   4| 玩具       |

|

+-----+--------+

6 rows in set (0.00 sec)

 能夠看到插入了一行數據,第4條.


 

使用JDBC對數據進行查看和刪除

 

package cn.xinsz.boke01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
publicclass demo1 {
    publicstaticvoid main(String[] args) throws Exception {
       Class.forName("com.mysql.jdbc.Driver");
       String url = "jdbc:mysql://localhost:3306/xinsz08";
       String user = "root";
       String password = "root";
       Connection conn = DriverManager.getConnection(url, user, password);
 
       Statement stat = conn.createStatement();
       select(stat);//查詢數據
       delete(stat);
       stat.close();
       conn.close();
    }
 
    privatestaticvoid delete(Statement stat) throws Exception {
       String sql= "delete from  category where cid=5";
       introw = stat.executeUpdate(sql);
       if(row>0){
           System.out.println("執行成功");
       }else{
           System.out.println("執行失敗");
       }             
       
    }
 
    privatestaticvoid select(Statement stat) throws Exception {
       String sql = "select * from category";
       ResultSet rs = stat.executeQuery(sql);
       while (rs.next()) {
 
           System.out.println(rs.getString("cid") + rs.getString("cname"));
 
       }
       rs.close();
 
    }
 
}

代碼分析:

使用JDBC時,最常打交道的是Connection、PreparedStatement這兩個類,以及select中的ResultSet類。

Connection

java.sql 
接口 Connection


public interface Connectionextends Wrapper

 

與特定數據庫的鏈接(會話)。在鏈接上下文中執行 SQL 語句並返回結果。

Connection 對象的數據庫可以提供描述其表、所支持的 SQL 語法、存儲過程、此鏈接功能等等的信息。此信息是使用 getMetaData 方法得到的。

 

  PreparedStatemnt

java.sql 
接口 PreparedStatement


public interface PreparedStatementextends Statement

表示預編譯的 SQL 語句的對象。

SQL 語句被預編譯並存儲在 PreparedStatement 對象中。而後可使用此對象屢次高效地執行該語句。

 

經常使用方法

 boolean  execute()

          在此 PreparedStatement 對象中執行 SQL 語句,該語句能夠是任何種類的 SQL 語句。

 ResultSet  executeQuery()

          在此 PreparedStatement 對象中執行 SQL 查詢,並返回該查詢生成的 ResultSet 對象。

 int  executeUpdate()

          在此 PreparedStatement 對象中執行 SQL 語句,該語句必須是一個 SQL 數據操做語言(Data Manipulation Language,DML)語句,好比 INSERT、UPDATE 或 DELETE 語句;或者是無返回內容的 SQL 語句,好比 DDL 語句。

  

  ResultSet  

java.sql 
接口 ResultSet


public interface ResultSetextends Wrapper

表示數據庫結果集的數據表,一般經過執行查詢數據庫的語句生成。


5.思考與分析


  • 每次SQL的操做都須要創建和關閉鏈接,咱們是否能夠考慮對JDBC進行封裝?

    答:事實上不少對JDBC的封裝已經這麼作了.

  • JDBC在整個java開發中佔了很大的比重,是務必要學會的內容,固然原生態JDBC的增刪改查比較簡單.


    總結: JDBC技術,能夠理解爲是一門基於Java語言的數據庫鏈接與開發技術,經過使用JDBC技術,能夠利用Java語言更好更快地進行數據庫開發。


          特別喜歡李小龍的一句話:"我不怕會一萬種招式的對手,我怕把一種招式練一萬遍的對手."

相關文章
相關標籤/搜索