天天看點

原生jdbc操作mysql資料庫詳解

首先給大家說一下使用JDBC連結資料庫的步驟

  1.加載連結資料庫驅動

  2.建立資料庫連結

  3.建立資料庫操作對象

  4.編寫sql語句,執行sql語句

  5.擷取結果集

  6.釋放資源

我這邊采用的是maven建構工具建立的java項目;如果不使用maven建立的話也沒有什麼不同,因為都是在main方法裡面寫的嘛!

隻是需要導入jdbc需要的jar包即可,然後下面建項目的這些步驟就可以直接跳過了

  首先點選建立項目

如果你的這裡沒有Maven Project 這個選項的話,那就直接點選Other,有的話就直接點選Maven項目即可!

原生jdbc操作mysql資料庫詳解
點完以後在這裡搜尋maven也是一樣的,選擇Maven  Project   然後next
原生jdbc操作mysql資料庫詳解
 直接使用預設  繼續next   
原生jdbc操作mysql資料庫詳解
找到我選中的那一條   ,其他地方不用填 ,繼續next
原生jdbc操作mysql資料庫詳解
主要目的不是為了建構項目,是以這上面兩個需要填寫的地方可以随意些,上面的代表包名 ,第二個代表項目名,然後Finish
原生jdbc操作mysql資料庫詳解
 然後在pom.xml裡面加入如下配置;我是不記得需要那幾個jar包了,是以直接全部放進去了,哈哈哈哈哈
原生jdbc操作mysql資料庫詳解
現在開始就要寫代碼了,首先建一個main方法,很簡單的寫一個例子

package com.TestJDBC;

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

/**
 * Hello world!
 *
 */
public class Demo01 
{
    public static void main( String[] args )
    {
        Connection connection=null ;
        Statement statement=null;
        ResultSet resultSet = null;
        try {
            //1.加載驅動
            Class.forName("com.mysql.jdbc.Driver");
            //2.擷取連接配接對象(參數解釋,第一個是代表jdbc的方式通路mysql資料庫,localhost代表是通路本地的,3306端口号,db_test01代表資料庫名字,後面兩個代表賬戶密碼
             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_test01","root","root");
            
            //3.擷取執行sql對象
             statement = connection.createStatement();
            //4.編寫sql語句,執行sql
            String sql="select * from stu";
            //5.擷取結果集 ,查詢操作使用executeQuery,增,删,改使用statement.executeLargeUpdate(sql)
            //如果是增删改操作,失敗了會傳回0            
            resultSet = statement.executeQuery(sql);
            if(resultSet.next()){
          //擷取字元串類型的值
                String name = resultSet.getString("name");
                String sex = resultSet.getString("sex");
            //擷取int型的值
                int age = resultSet.getInt("age");
                System.out.println(name+" ,"+sex+","+age);
            }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            //6.釋放連接配接
            if(resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }    
        }
    }
}      

 下面改了一下,是一個預編譯的案例

package com.TestJDBC;

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

/**
 * Hello world!
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            // 1.加載驅動
            Class.forName("com.mysql.jdbc.Driver");
            // 2.擷取連接配接對象(參數解釋,第一個是代表jdbc的方式通路mysql資料庫,localhost代表是通路本地的,3306端口号,db_test01代表資料庫名字,後面兩個代表賬戶密碼
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_test01", "root", "root");

            // 3.擷取執行sql對象
            // 4.編寫sql語句,執行sql(預編譯,用?号代替值)
            String sql = "select * from stu where id=?";
            statement = connection.prepareStatement(sql);
            //然後再設定進去,可以設定多個值
            statement.setString(1, "1");
            resultSet = statement.executeQuery();
            // 5.擷取結果集
            // ,查詢操作使用executeQuery,增,删,改使用statement.executeLargeUpdate(sql)
            // 如果是增删改操作,失敗了會傳回0
            if (resultSet.next()) {
                // 擷取字元串類型的值
                String name = resultSet.getString("name");
                String sex = resultSet.getString("sex");
                // 擷取int型的值
                int age = resultSet.getInt("age");
                System.out.println(name + " ," + sex + "," + age);
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            // 6.釋放連接配接
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}