1. 程式人生 > >JAVA之操作資料庫增刪改查-JDBC的使用

JAVA之操作資料庫增刪改查-JDBC的使用

一。準備工作:
1.操作資料庫的JDBC.jar包,下載地址:http://download.csdn.net/detail/qq_33750826/9671725
2.如果你的電腦為安裝mysql請安裝mysql,下載地址:http://download.csdn.net/detail/qq_33750826/9671736
安裝方式:http://jingyan.baidu.com/article/f79b7cb35c0f439144023e38.html
下載地址附有安裝失敗的解決辦法
3.下載與java配合使用的資料庫,下載地址:http://download.csdn.net/detail/qq_33750826/9671745


記住上面mysql成功正確之後才可以使用sqlyog,否則建立連線一直會失敗的
4.建立java Project將下載的jdbc包匯入到專案中:點選專案->右鍵->Build Path->Configure Build Path->libraries->Add External JARs,找到下載的jdbc包路徑匯入,點選確定->Apply
5.安裝sqlyog並能夠連線上資料庫之後首先在sqlyog資料庫中建立一個數據庫:
這裡寫圖片描述
之後建立表:
這裡寫圖片描述
這是我已經建立好的表
這裡寫圖片描述

準備工作到上面就結束了。
如果上面都做成功了那麼下面進入程式碼階段:

二.程式碼部分
1.找到準備工作中建立的java Project專案,我先寫好了一個輔助類:

package com.example.javajdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbHelper {

     /**
      * 建立連結
      * */
    public static
Connection getconnection() { try{ //獲得操作管理者的驅動程式,也就是DriverManager Class.forName("com.mysql.jdbc.Driver"); //通過jdbc連線mysql,獲得連線物件 return DriverManager.getConnection("jdbc:mysql://localhost:3306/wttest", "root", "123456"); }catch (Exception e) { e.printStackTrace(); return null; } } //關閉連線 public static void closeConnectionAndStatement(Connection con,Statement st,ResultSet oSet){ try { if(st!=null)st.close(); if(con!=null)con.close(); if (oSet!=null) { oSet.close(); } } catch (SQLException e) { e.printStackTrace(); } } }

2.插入:

package com.example.javajdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertJDBC {

    public static void main(String[] args) {
        DbHelper helper=new DbHelper();
        Connection connection=helper.getconnection();
        insertTwo(connection);
    }

    public static void insertOne(Connection connection){
        String sql="insert into people(name,age,sex) values('jhl','100','male')";
        PreparedStatement ps = null;
        try {
            //將sql語句提交到資料庫進行預編譯
            ps=connection.prepareStatement(sql);
            int i=ps.executeUpdate();
            if (i>0) {
                System.out.println("新增成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (connection!=null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (ps!=null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    public static void insertTwo(Connection connection){
        String sql="insert into people(name,age,sex) values(?,?,?)";
        PreparedStatement ps = null;
        try {
            //將sql語句提交到資料庫進行預編譯
            ps=connection.prepareStatement(sql);
            ps.setString(1, "jhl2");
            ps.setString(2, "102");
            ps.setString(3, "female");
            int i=ps.executeUpdate();
            if (i>0) {
                System.out.println("新增成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (connection!=null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps!=null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.更新

package com.example.javajdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Savepoint;

import javax.naming.ConfigurationException;

public class UpdateJDBC {

    public static void main(String[] args) throws SQLException {
        DbHelper helper = new DbHelper();
        Connection connection = helper.getconnection();
        //updateOne(connection);
        updateTwo(connection);
    }

    public static void updateOne(Connection connection) throws SQLException {
        String sql = "update people set age='200' where name='jhl2'";
        /**
         * 自動提交為false表示如果沒有執行commit()方法則不會提交更新 和沒有執行rollback()取消savepoint的更新
         * 如果連線處於自動提交模式下,則它的所有 SQL 語句將被執行並作為單個事務提交。 否則,它的 SQL 語句將聚集到事務中,直到呼叫
         * commit 方法或 rollback 方法為止。 預設為true,自動提交更新
         */
        connection.setAutoCommit(false);
        PreparedStatement ps = connection.prepareStatement(sql);
        int i = ps.executeUpdate();//對於這個返回值表示你提供的sql語句要更新了多少行,如果沒有更新則返回0,否則返回更新的數量
        System.out.println(i);
        if (i >= 0) {
            connection.commit();
            connection.close();
            ps.close();
            System.out.println("更新成功");
        } else {
            connection.close();
            ps.close();
            System.out.println("更新失敗");
        }
    }

    public static void updateTwo(Connection connection) throws SQLException {
        String sql = "update people set age='400' where age='4100'";
        connection.setAutoCommit(false);
        /**
         * 設定一個儲存點,方便取消某些更新
         */
        Savepoint savepoint = connection.setSavepoint();
        PreparedStatement ps = connection.prepareStatement(sql);
        //對於這個返回值表示你提供的sql語句要更新了多少行,如果沒有更新則返回0,否則返回更新的數量
        int i=ps.executeUpdate();
        System.out.println(i);
        if (i >=0 ) {
            //如果添加了此行就算你commit了還是不會更新資料,因為你在commit之前已經roolback回滾了,就是取消更新了
            //connection.rollback(savepoint);
            connection.commit();
            connection.close();
            ps.close();
            System.out.println("更新成功");
        } else {
            connection.rollback(savepoint);
            connection.close();
            ps.close();
            System.out.println("更新失敗");
        }
    }


}

4.查詢:

將查詢物件放在people類中

package com.example.javajdbc;

public class People {

    String name;
    String age;
    String sex;
    public People(String name, String age, String sex) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}

4.1

package com.example.javajdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;

public class SelectJDBC {

    public static void main(String[] args) throws SQLException {
        DbHelper helper = new DbHelper();
        Connection connection = helper.getconnection();
        // selectOne(connection);
        selectTwo(connection);
    }

    public static void selectOne(Connection connection) throws SQLException {
        String sql = "select * from people";
        PreparedStatement ps = connection.prepareStatement(sql);
        ResultSet rSet = ps.executeQuery();
        while (rSet.next()) {
            System.out.println(rSet.getString("age"));
        }
        connection.close();
        ps.close();
    }

    public static void selectTwo(Connection connection) throws SQLException {
        String sql = "select * from people";
        PreparedStatement ps = connection.prepareStatement(sql);
        ResultSet rSet = ps.executeQuery();
        People people;
        ArrayList<People> list = new ArrayList<People>();
        while (rSet.next()) {
            String name = rSet.getString("name");
            String age = rSet.getString("age");
            String sex = rSet.getString("sex");
            people = new People(name, age, sex);
            list.add(people);
        }
        Iterator<People> iterator = list.iterator();
        while (iterator.hasNext()) {
            People people2 = iterator.next();
            System.out.println(people2.getName() + "," + people2.getAge() + "," + people2.getSex());
        }
    }
}

5.刪除:

package com.example.javajdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteJDBC {

    public static void main(String[] args) throws SQLException {
        DbHelper helper=new DbHelper();
        Connection connection=helper.getconnection();
        deleteOne(connection);
    }
    public static void deleteOne(Connection connection) throws SQLException{
        String sql="delete from people where age=400";
        PreparedStatement ps=connection.prepareStatement(sql);
        //對於這個返回值表示你提供的sql語句要delete了多少行,如果沒有delete則返回0,否則返回delete的數量
        int i=ps.executeUpdate();
        if (i>=0) {
            ps.close();
            connection.close();
            System.out.println("刪除成功");
        }else {
            ps.close();
            connection.close();
            System.out.println("刪除失敗");
        }
    }

}

這裡寫圖片描述