Heim  >  Artikel  >  Datenbank  >  JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode

JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode

一个新手
一个新手Original
2017-09-11 11:19:161340Durchsuche

Schritte:
1. SQL-Datenbanktreiber laden

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

2 Datenbank

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

3. Get Statement

stmt = con.createStatement();

4 Aussage

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

5. Betriebsdatenbank

Zum besseren Verständnis ist im Folgenden der Inhalt der von mir betriebenen Datenbank aufgeführt :
JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode

JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode

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-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode /////////////////////////


        ///// 上面用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();
        }
    }
}

Screenshot 1:
JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode

Screenshot 2:
JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode

Screenshot 3:
JDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode


Die oben genannten Vorgänge in der Datenbank können von einem Beispiel auf ein anderes übertragen werden. Die wichtigsten Punkte sind: die Vorteile der Vorverarbeitung:
JDBC-Verbindungsvorverarbeitung kann SQL-Injection verhindern und die Sicherheit verbessern. Da die SQL-Anweisung vor der Ausführung des Programms vorkompiliert wurde, wurde die SQL-Anweisung vor dem ersten Betrieb der Datenbank bei laufendem Programm von der Datenbank analysiert, kompiliert und optimiert. Der entsprechende Ausführungsplan wird ebenfalls zwischengespeichert Ermöglichen Sie die Parametrisierung der Datenbank. Wenn Parameter zur Laufzeit dynamisch an PreprareStatement übergeben werden, behandelt die Datenbank diese als Parameter, auch wenn die Parameter vertrauliche Zeichen wie „1 = 1“ enthalten Feldattributwert statt als SQL-Befehl. Auf diese Weise spielt es die Rolle einer SQL-Injection!

Das obige ist der detaillierte Inhalt vonJDBC-Verbindungsoperation MySQL, direkte Operation und Vorverarbeitungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn