首頁  >  文章  >  資料庫  >  jdbc連接操作mysql,直接操作和預處理方式

jdbc連接操作mysql,直接操作和預處理方式

一个新手
一个新手原創
2017-09-11 11:19:161289瀏覽

步驟:
#1. 載入sql資料庫驅動程式

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

2. 連線資料庫 

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

3.取得Statement  

stmt = con.createStatement();

4.寫入想要執行的sql語句

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

5.操作資料庫

#為方面理解以下是本人操作的資料庫內容:
jdbc連接操作mysql,直接操作和預處理方式

jdbc連接操作mysql,直接操作和預處理方式

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数据库驱动
        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"; // 数据库所在位置
        String username = "root"; // 数据库用户名
        String pwd = "123456"; // 数据库密码
        try {            /// 连接数据库
            con = DriverManager.getConnection(url, username, pwd);            /// 获得Statement
            stmt = con.createStatement();            /// 写入想要执行的sql语句
            String sql = "select * from student";            /// 获得sql语句执行后的集
            result = stmt.executeQuery(sql);            // 在控制台打印出数据库内容
            System.out.println("学号" + " 姓名" + "    年    龄    " + "  性别");            while (result.next()) {                int id = result.getInt(1); // 这里对应数据库中表的第一个字段属性,接受内容的属性要根据数据库的属性
                String name = result.getString(2);
                String age = result.getString(3);
                String sex = result.getString(4);
                System.out.println(" " + id + "  " + name + " " + age + " " + sex);/////////////////////下面有验证截图1 /////////////////////////
            }            // 用Statement向表中插入数据
            String sql2 = "insert into student values(9,\"李丽\",\"1990-12-25\",\"女\")";          
            stmt.executeUpdate(sql2);// 更新数据/////////////////////下面有验证jdbc連接操作mysql,直接操作和預處理方式 /////////////////////////


        ///// 上面用Statement操作数据库十分麻烦,在一些特定场合可以使用预处理方法来操作数据库
            String sql3 = "insert into student values(?,?,?,?)";/// 插入数据
            pstm = con.prepareStatement(sql3);

            pstm.setInt(1, 10); /// 前面的数字1代码表中的第1字段,后面的9是要插入表中第1个字段的内容
            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:
jdbc連接操作mysql,直接操作和預處理方式

截圖2:
jdbc連接操作mysql,直接操作和預處理方式

截圖3:
jdbc連接操作mysql,直接操作和預處理方式


上面對資料庫的操作可以舉一反三,重點說下:預處理的好處:
jdbc連線預處理可以預防SQL注入,提高安全性。因為SQL語句在程式運行前已經進行了預編譯,在程式運行時第一次操作資料庫之前,SQL語句已經被資料庫分析,編譯和最佳化,對應的執行計劃也會快取下來並允許資料庫已參數化的形式進行查詢,當運行時動態地把參數傳給PreprareStatement時, 即使參數裡有敏感字符如or'1=1'也數據庫會作為一個參數一個字段的屬性值來處理而不會作為一個SQL指令,如此,就起到了SQL注入的作用了!

以上是jdbc連接操作mysql,直接操作和預處理方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn