IDEA使用Maven連接MySQL的jdbc驅動操作數據庫




Java中使用JDBC連接數據庫

  1. 加載驅動(告訴Java程序,即將要鏈接的是哪中類型的數據庫)

  2. 獲取鏈接【創建數據庫連接】(表示JVM的進程和數據庫進程之間的通道打開了,數據進程之間通信,重量級的,使用完成之后一定要關閉進程)

  3. 獲取數據庫操作對象【創建執行sql的對象】

  4. 執行語句【DQL,DML...】

  5. 處理執行結果【數據結果集】(只用在執行查詢SELECT語句時,才會處理查詢結果集)

  6. 釋放資源(使用完資源后一i定要關閉資源)


pox.xml文件配置(下載驅動)

1     <dependencies>
2         <dependency>
3             <groupId>mysql</groupId>
4             <artifactId>mysql-connector-java</artifactId>
5             <version>5.1.46</version>
6         </dependency>
7     </dependencies>

 

代碼示例一:

直接注冊驅動操作數據庫

此方法操作鏈接數據庫不推薦使用,操作不方便,更不好維護,數據庫之間切換繁瑣

import java.sql.*;

public class ChengDatebaseInsert {

    public static void main(String[] arge) {
        Connection coon = null;
        PreparedStatement statement = null;
        try {
            //注冊驅動
            Class.forName("com.mysql.jdbc.Driver");
            //獲取數據庫連接(里面依次是jdbc:mysql://主機號:端口號/數據庫名),用戶名,用戶密碼
            try {
                coon = DriverManager.getConnection("jdbc:mysql://localhost:3306/center?serverTimezone=UTC&userSSL=false"
                        , "root", "123456");
                System.out.println(coon + "獲取成功!");
                //需要執行的sql語句
                String sql = "insert INTO center_user(CENTER_NAME,CENTER_AGE,CENTER_SEX) VALUES(?,?,?) ";
                //獲取預處理對象
                statement = coon.prepareCall(sql);
                statement.setString(1, "王老虎");
                statement.setInt(2, 12);
                statement.setString(3, "男");
                //執行sql(執行幾行,返回幾條記錄)
                int updatecont = statement.executeUpdate();
                System.out.println("更新數據總數據是:" + updatecont);

            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            //關閉jdbc連接
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (coon != null) {
                try {
                    coon.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}

第二種(新手推薦,實際框架中我們不建議這么定義):

package com.guisha.JDBC;
import java.sql.*;

public class JDBCTest {
    public static void main(String[] agre) throws SQLException {
        PreparedStatement stam = null;
        Connection conn = null;
        try {
            //注冊驅動(常用,不需要接受返回值,我們只需要這個類加載動作)
            Class.forName("com.mysql.jdbc.Driver");
            //獲取鏈接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user", "root", "guisha");
            //許喲啊執行的sql語句
            String sql = "update center_user set user_name='王老頭' where user_age='21' ";
            //創建數據庫操作對象
            stam = conn.prepareStatement(sql);
            // executeUpdate 執行數據SQL更新
            //count 返回執行的條數
            int count = stam.executeUpdate();
            System.out.println(count == 1 ? "修改成功!" : "修改失敗!");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if (stam != null) {
                stam.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
}

先了解下簡單的DELETE和UPDATE操作

JDBC操作Delete:

package com.guisha.JDBC;

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

public class JdbcDeleteTest {
    public static void main(String[] args) {

        //將數據庫配置定義為變量(開發中我們定義到properties配置文件中去)
        String Driver = "jdbc:mysql://localhost:3306/user";
        String name = "root";
        String password = "guisha";

        Connection coon = null;
        Statement strm = null;
        try {
            //注冊驅動
            Class.forName("com.mysql.jdbc.Driver");
            //獲取鏈接
            try {
                coon = DriverManager.getConnection(Driver, name, password);
                //創建數據庫對象操作對象
                strm = coon.createStatement();
                //創建需要執行的sql語句
                String sql = "delete from center_user where USER_NAME='王琳'";
                //執行更新操作
                int count = strm.executeUpdate(sql);
                System.out.println(count == 1 ? "刪除成功!" : "刪除失敗!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (strm != null) {
                try {
                    strm.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (coon != null) {
                try {
                    coon.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

JDBC操作Update:

package com.guisha.JDBC;

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

public class JdbcDeleteTest {
    public static void main(String[] args) {

        //將數據庫配置定義為變量(開發中我們定義到properties配置文件中去)
        String Driver = "jdbc:mysql://localhost:3306/user";
        String name = "root";
        String password = "guisha";

        Connection coon = null;
        Statement strm = null;
        try {
            //注冊驅動
            Class.forName("com.mysql.jdbc.Driver");
            //獲取鏈接
            try {
                coon = DriverManager.getConnection(Driver, name, password);
                //創建數據庫對象操作對象
                strm = coon.createStatement();
                //創建需要執行的sql語句
                String sql = "Update center_user set USER_AGE='19' where USER_NAME='王老頭'";
                //執行更新操作
                int count = strm.executeUpdate(sql);
                System.out.println(count == 1 ? "更新成功!" : "更新失敗!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (strm != null) {
                try {
                    strm.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (coon != null) {
                try {
                    coon.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

  

 

代碼示例二:

新建數據庫配置文件,獲取配置文件信息后注冊數據庫驅動

利用反射獲取新建的數據庫配置文件db.properties里的配置信息

示例一:

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/user
3 user=root
4 password=guisha

 

package com.guisha.JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

/**
 * 方法描述
 *      注意:實際開發中不建議把數據庫鏈接數據庫的信息寫死到程序中
 * @since: 1.0.0
 * @author: Mr.cheng
 */
public class Properties {
    public static void main(String[] args) {

        //使用資源綁定器綁定屬性配置文件
        ResourceBundle bundle = ResourceBundle.getBundle("db");
        String driver = bundle.getString("driver");
        String url = bundle.getString("url");
        String user = bundle.getString("user");
        String password = bundle.getString("password");

        Connection coon = null;
        Statement strm = null;
        try {
            //注冊驅動
            Class.forName(driver);
            //獲取鏈接
            try {
                coon = DriverManager.getConnection(url, user, password);
                //創建數據庫對象操作對象
                strm = coon.createStatement();
                //創建需要執行的sql語句
                String sql = "Update center_user set USER_AGE='18' where USER_NAME='王老頭'";
                //執行更新操作
                int count = strm.executeUpdate(sql);
                System.out.println(count == 1 ? "更新成功!" : "更新失敗!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (strm != null) {
                try {
                    strm.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (coon != null) {
                try {
                    coon.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

  

示例二:

driver=com.mysql.jdbc.Driver
mysql_url=jdbc:mysql://localhost:3306/center
mysql_user=root
mysql_password=123456

 

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class ChengJdbcTest {
    private static String driver;
    private static String mysql_url;
    private static String mysql_user;
    private static String mysql_password;

    static {

        //新建屬性對象
        Properties property = new Properties();
        //通過反射,新建字符輸入流,讀取mysql.properties文件
        InputStream input = ChengJdbcTest.class.getClassLoader().getResourceAsStream("db.properties");
        //將輸入流中讀取到的屬性,加載到properties屬性及對象中
        try {
            //將input 加載到property對象中
            property.load(input);
            //根據鍵,獲取properties中對應的值賦值
            driver = property.getProperty("driver");
            mysql_url = property.getProperty("mysql_url");
            mysql_user = property.getProperty("mysql_user");
            mysql_password = property.getProperty("mysql_password");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //返回數據庫連接
    public static Connection getConnection(){
        try {
            //加載驅動
            Class.forName(driver);
            try {
                //連接數據庫
               Connection connection = DriverManager.getConnection(mysql_url, mysql_user, mysql_password);
               //返回值
                return connection;
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}

  

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

public class TestMysql {
    public static void main(String[] args) throws SQLException {
        //獲取數據庫連接
        Connection connection = ChengJdbcTest.getConnection();
        //SQL語句
        String sql = "insert INTO center_user(CENTER_NAME,CENTER_AGE,CENTER_SEX) VALUES(?,?,?) ";
        //執行SQL
        PreparedStatement statement = connection.prepareCall(sql);
        //數據庫傳值
        statement.setString(1, "小程");
        statement.setInt(2, 12);
        statement.setString(3, "男");
        //更新返回的條數,返回Integer
        int update = statement.executeUpdate();
        System.out.println("更新完成:" + update);
        //關閉資源
        if (statement != null) {
            statement.close();
        }
        if (connection != null) {
            connection.close();
        }
    }
}

  

 

 

下一篇: JDBC實現簡單登錄功能


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM