1. 程式人生 > >JDBC實現數據庫的增刪改查

JDBC實現數據庫的增刪改查

jdbc mysql


本文主要講解:

  1. JDBC的概念

  2. JDBC的原理

  3. 創建用於測試的數據庫

  4. 使用JDBC操作數據庫

  5. 思考與分析


  1. 關於JDBC

JDBCJava DataBase Connectivity,java數據庫連接)是一種用於執行SQL語句的Java APIJDBCJava訪問數據庫的標準規範,可以為不同的關系型數據庫提供統一訪問,它由一組用Java語言編寫的接口和類組成。

2.JDBC原理:

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

  • 所有超級接口:

  • Wrapper


public interface Connectionextends Wrapper

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

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

  PreparedStatemnt

java.sql
接口 PreparedStatement

  • 所有超級接口:

  • Statement, Wrapper

  • 所有已知子接口:

  • CallableStatement


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

  • 所有超級接口:

  • Wrapper

  • 所有已知子接口:

  • CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet


public interface ResultSetextends Wrapper

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


5.思考與分析


  • 每次SQL的操作都需要建立和關閉連接,我們是否可以考慮對JDBC進行封裝?

    答:事實上很多對JDBC的封裝已經這麽做了.

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


    總結: JDBC技術,可以理解為是一門基於Java語言的數據庫連接與開發技術,通過使用JDBC技術,可以利用Java語言更好更快地進行數據庫開發。


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

本文出自 “xinsz08の平行時空” 博客,請務必保留此出處http://xinsz08.blog.51cto.com/10565212/1947929

JDBC實現數據庫的增刪改查