Maison  >  Article  >  base de données  >  opération de connexion jdbc mysql, opération directe et méthode de prétraitement

opération de connexion jdbc mysql, opération directe et méthode de prétraitement

一个新手
一个新手original
2017-09-11 11:19:161289parcourir

Étapes :
1. Charger le pilote de base de données SQL

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

2. Base de données

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

3. Get Statement

stmt = con.createStatement();

4. Écrivez le SQL que vous souhaitez exécuter. Déclaration

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

5. Base de données d'opération

Par souci de compréhension, voici le contenu de la base de données que j'exploite. :
opération de connexion jdbc mysql, opération directe et méthode de prétraitement

opération de connexion jdbc mysql, opération directe et méthode de prétraitement

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);// 更新数据/////////////////////下面有验证opération de connexion jdbc mysql, opération directe et méthode de prétraitement /////////////////////////


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

Capture d'écran 1 :
opération de connexion jdbc mysql, opération directe et méthode de prétraitement

Capture d'écran 2 :
opération de connexion jdbc mysql, opération directe et méthode de prétraitement

Capture d'écran 3 :
opération de connexion jdbc mysql, opération directe et méthode de prétraitement


Les opérations ci-dessus sur la base de données peuvent être tirées d'un exemple à l'autre. Les points clés. sont : les avantages du prétraitement :
Le prétraitement des connexions JDBC peut empêcher l'injection SQL et améliorer la sécurité. Étant donné que l'instruction SQL a été précompilée avant l'exécution du programme, l'instruction SQL a été analysée, compilée et optimisée par la base de données avant la première opération de la base de données lors de l'exécution du programme. Le plan d'exécution correspondant sera également mis en cache et. permettre à la base de données d'être paramétrée. Requête sous la forme, lorsque les paramètres sont transmis dynamiquement à PreprareStatement au moment de l'exécution, même s'il y a des caractères sensibles dans les paramètres tels que ou « 1 = 1 », la base de données la traitera comme un paramètre et un valeur d'attribut de champ au lieu d'une commande SQL. De cette façon, il joue le rôle d'injection SQL !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn