JDBC技術--驅動與具體實現

幾種常見的數據庫驅動格式和URL格式
    1、    驅動格式

a)  MySQL:   com.mysql.jdbc.Driver 

或者org.gjt.mm.mysql.Driver

b)  SQL Server:

 com.miscrosoft.sqlserver.jdbc.SQLServerDriver

c)  Oracle: oracle.jdbc.driver.OracleDriver

 

2、    URL格式

a)  MySQL:

jdbc:mysql://localhost:3306/數據庫名

b)  SQL Server:

jdbc:sqlserver://127.0.0.1:1433;databaseName=數據庫名

c)  Oracle:

jdbc:oracle:thin:@localhost:1521:數據庫名

 

 

JDBC開發步驟

1、創建Java項目,並加入數據庫jar包

    (1)在項目上創建一個文件夾,名稱爲lib

    (2)把相應的jar包複製到此文件夾中

    (3)右擊jar包-->Build Path-->add too Build Path

 

2、加載數據庫驅動

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

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

   

3、獲得數據庫連接

    Connectionconnect = DriverManager.getConnection(url, 用戶名, 密碼)

    url表示數據庫連接協議:jdbc:mysql://localhost:3306/數據庫名

       jdbc:mysql://-->數據庫協議

       localhost-->表示數據庫服務的ip地址

       3306-->表示數據庫服務的端口號

    用戶名:root

    密碼:123456

   

4、創建會話

    Statementstate = connect.createStatement();

   

5、執行sql語句

    state.executeUpdate(sql);//增刪改

    ResultSetset = state.executeQuery(sql);//查

   

6、關閉會話以及數據庫連接

    state.close();

    connect.close();

 

   

JDBC具體實現操作

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

public class MyJDBC {

    // 靜態代碼塊:類被加載就執行,並且只執行一次

    static{

       try{

           //2、加載驅動

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

       }catch (ClassNotFoundException e) {

           e.printStackTrace();

       }

    }

 

   // 創建表

    publicstatic void createTable() throws SQLException {

       //3、獲得數據庫連接

       Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址

              "root",// 數據庫服務的用戶名

              "123456");//數據庫服務的密碼

 

       //4、創建會話

       Statementstate = connect.createStatement();

 

       //5、執行SQL語句

       Stringsql = "create table student(id int primary key auto_increment, " +"name char(10), " + "sex char, "

              +"age int);";

       state.execute(sql);

       System.out.println("student表創建成功");

 

       //6、關閉

       state.close();

       connect.close();

    }

 

   // 增加數據

    publicstatic void insertData() throws SQLException {

       Connectionconnect = null;

       Statementstate = null;

 

       try{

           //3、獲得數據庫連接

           connect= DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc",// 連接數據庫的url地址

                  "root",// 數據庫服務的用戶名

                  "123456");//數據庫服務的密碼

 

           //4、創建會話

           state= connect.createStatement();

 

           /*

            * 方式1 //5、執行SQL語句 for(int i = 0; i < 5; i++) { //寫定數據添加 String sql

            * = "insert into student(name, sex, age)values('小明', '男', 20)";

            * state.executeUpdate(sql); }

            */

 

           /*

            * 方式2 //準備數組資源 String[] name = {"張三","李四","王二麻子","趙六","鐵柱"};

            * String[] sex = {"男", "女"};int[] age = {10,11,12,14,15};

            *

            * //5、執行SQL語句 for (int i = 0; i < 5; i++) { int a= (int)

            * (Math.random()*2);//獲得0~2之間的隨機整數 //從數組中獲取數據依次添加 String sql =

            * "insert into student(name, sex, age)values('" + name[i] + "', '"

            * +sex[a]+"', " + age[i] +")";

            *

            * state.executeUpdate(sql); }

            */

 

           //方式3

           //通過鍵盤輸入添加數據

           Scannersc = new Scanner(System.in);// 獲取鍵盤輸入

           while(true) {

              System.out.println("請輸入名字:");

              Stringname = sc.next();

              System.out.println("請輸入性別:男或女");

              Stringsex = sc.next();

              System.out.println("請輸入年齡");

              intage = sc.nextInt();

 

              Stringsql = "insert into student(name, sex, age) values('" + name +"', '" + sex + "', " + age + ");";

 

              state.executeUpdate(sql);

           }

       }catch (Exception e) {

           e.printStackTrace();

       }finally {

           //關閉

           state.close();

           connect.close();

       }

    }

 

   // 刪除數據

    publicstatic void deleteData() throws SQLException {

 

       //3、獲得數據庫連接

       Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址

              "root",// 數據庫服務的用戶名

              "123456");//數據庫服務的密碼

 

       //4、創建會話

       Statementstate = connect.createStatement();

 

       //執行SQL語句

       Scannersc = new Scanner(System.in);

       System.out.println("請輸入要刪除的記錄的id號:");

       intid = sc.nextInt();

       Stringsql = "delete from student where id=" + id + ";";

       state.executeUpdate(sql);

 

       System.err.println("數據刪除成功");

 

       //關閉

       state.close();

       connect.close();

       sc.close();

 

    }

 

   // 更改數據

    publicstatic void updateData() throws SQLException {

 

       //3、獲得數據庫連接

       Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址

              "root",// 數據庫服務的用戶名

              "123456");//數據庫服務的密碼

 

       //4、創建會話

       Statementstate = connect.createStatement();

 

       //執行SQL語句

       Scannersc = new Scanner(System.in);

       System.out.println("請輸入要刪除的記錄的id號:");

       intid = sc.nextInt();

       Stringsql = "update student set name='小紅', sex='女' where id=" + id +";";

       state.executeUpdate(sql);

 

       System.err.println("數據更改成功");

 

       //關閉

       state.close();

       connect.close();

       sc.close();

 

    }

 

   // 查詢數據

    publicstatic List<Student> selectData() throws SQLException {

       List<Student>list = new ArrayList<>();

      

 

       //3、獲得數據庫連接

       Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址

              "root",// 數據庫服務的用戶名

              "123456");//數據庫服務的密碼

 

       //4、創建會話

       Statementstate = connect.createStatement();

      

 

       //執行SQL語句

       Stringsql = "select * from student where id in(1,3,5,7,9)";

       ResultSetset = state.executeQuery(sql);

       while(set.next()){

//         intid = set.getInt(1);//根據id字段的列標獲取字段的值

           intid = set.getInt("id");

           Stringname = set.getString("name");

           Stringsex = set.getString("sex");

           intage = set.getInt("age");

          

           Studentstu = new Student(id, name, sex, age);

          

           list.add(stu);

       }

 

       //關閉

       state.close();

       connect.close();

      

       returnlist;

    }

 

    publicstatic void main(String[] args) throws SQLException {

       //MyJDBC.createTable();

       //MyJDBC.insertData();

       //MyJDBC.deleteData();

//     MyJDBC.updateData();

      

       List<Student>list = MyJDBC.selectData();

       for(Student student : list) {

           System.out.println(student);

       }

 

    }

 

}

 

//javaBean

public class Student {

    privateint id;

    privateString name;

    privateString sex;

    privateint age;

 

    publicStudent(int id, String name, String sex, int age) {

       super();

       this.id= id;

       this.name= name;

       this.sex= sex;

       this.age= age;

    }

 

    publicStudent() {

       super();

    }

 

    publicint getId() {

       returnid;

    }

 

    publicvoid setId(int id) {

       this.id= id;

    }

 

    publicString getName() {

       returnname;

    }

 

    publicvoid setName(String name) {

       this.name= name;

    }

 

    publicString getSex() {

       returnsex;

    }

 

    publicvoid setSex(String sex) {

       this.sex= sex;

    }

 

    publicint getAge() {

       returnage;

    }

 

    publicvoid setAge(int age) {

       this.age= age;

    }

 

    @Override

    publicString toString() {

       return"Student [id=" + id + ", name=" + name + ", sex="+ sex + ", age=" + age + "]";

    }

 

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章