明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

jdbc連接設置mysql,直接設置與預處理方式

[摘要]步驟: 1. 加載sql數(shù)據(jù)庫驅動 Class.forName(“com.mysql.jdbc.Driver”);2. 連接數(shù)據(jù)庫 con = DriverManager.getConnect...
步驟:
1. 加載sql數(shù)據(jù)庫驅動

 Class.forName(“com.mysql.jdbc.Driver”);

2. 連接數(shù)據(jù)庫

 con = DriverManager.getConnection(url, username, pwd);

3.獲得Statement

stmt = con.createStatement();

4.寫入想要執(zhí)行的sql語句

eg: String sql = “select * from student”;

5.操作數(shù)據(jù)庫

為方面理解下面是本人操作的數(shù)據(jù)庫內(nèi)容:
這里寫圖片描述

這里寫圖片描述

package com.wql.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/**
 * @author wql
 *
 */public class jdbc {    public static void main(String[] args) {        /// 加載sql數(shù)據(jù)庫驅動
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Connection con = null;
        Statement stmt = null;
        ResultSet result = null;
        PreparedStatement pstm = null;// 預處理

        String url = "jdbc:mysql://localhost:3306/work"; // 數(shù)據(jù)庫所在位置
        String username = "root"; // 數(shù)據(jù)庫用戶名
        String pwd = "123456"; // 數(shù)據(jù)庫密碼
        try {            /// 連接數(shù)據(jù)庫
            con = DriverManager.getConnection(url, username, pwd);            /// 獲得Statement
            stmt = con.createStatement();            /// 寫入想要執(zhí)行的sql語句
            String sql = "select * from student";            /// 獲得sql語句執(zhí)行后的集
            result = stmt.executeQuery(sql);            // 在控制臺打印出數(shù)據(jù)庫內(nèi)容
            System.out.println("學號" + " 姓名" + "    年    齡    " + "  性別");            while (result.next()) {                int id = result.getInt(1); // 這里對應數(shù)據(jù)庫中表的第一個字段屬性,接受內(nèi)容的屬性要根據(jù)數(shù)據(jù)庫的屬性
                String name = result.getString(2);
                String age = result.getString(3);
                String sex = result.getString(4);
                System.out.println(" " + id + "  " + name + " " + age + " " + sex);/////////////////////下面有驗證截圖1 /////////////////////////
            }            // 用Statement向表中插入數(shù)據(jù)
            String sql2 = "insert into student values(9,\"李麗\",\"1990-12-25\",\"女\")";          
            stmt.executeUpdate(sql2);// 更新數(shù)據(jù)/////////////////////下面有驗證截圖2 /////////////////////////


        ///// 上面用Statement操作數(shù)據(jù)庫十分麻煩,在一些特定場合可以使用預處理方法來操作數(shù)據(jù)庫
            String sql3 = "insert into student values(?,?,?,?)";/// 插入數(shù)據(jù)
            pstm = con.prepareStatement(sql3);

            pstm.setInt(1, 10); /// 前面的數(shù)字1代碼表中的第1字段,后面的9是要插入表中第1個字段的內(nèi)容
            pstm.setString(2, "流星雨");
            pstm.setString(3, "1998-02-03");
            pstm.setString(4, "男");

            pstm.executeUpdate();/////////////////////下面有驗證截圖 /////////////////////////
        } catch (SQLException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

截圖1:
這里寫圖片描述

截圖2:
截圖2

截圖3:
截圖3


上面對數(shù)據(jù)庫的操作可以舉一反三,重點說下:預處理的好處:
jdbc連接預處理可以預防SQL注入,提高安全性。因為SQL語句在程序運行前已經(jīng)進行了預編譯,在程序運行時第一次操作數(shù)據(jù)庫之前,SQL語句已經(jīng)被數(shù)據(jù)庫分析,編譯和優(yōu)化,對應的執(zhí)行計劃也會緩存下來并允許數(shù)據(jù)庫已參數(shù)化的形式進行查詢,當運行時動態(tài)地把參數(shù)傳給PreprareStatement時, 即使參數(shù)里有敏感字符如 or’1=1’也數(shù)據(jù)庫會作為一個參數(shù)一個字段的屬性值來處理而不會作為一個SQL指令, 如此,就起到了SQL注入的作用了!

以上就是jdbc連接操作mysql,直接操作和預處理方式的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。