Java-JDBC détaillé

 
Java-JDBC détaillé
 

Interfaces et bibliothèques de classes JDBC couramment utilisées

1.DriverManager: classe de service qui pilote le pilote JDBC

2.Connexion: objet de connexion à la base de données

3. Instruction: l'objet à exécuter SQL

4. PreparedStatement: l'objet qui exécute SQL

5. ResultSet: objet du jeu de résultats, encapsule les résultats de la requête

Étapes à suivre pour utiliser JDBC

Exercice de connexion

Outils JDBC

Code de connexion

 La création n'est pas facile, si ce blog vous est utile, n'oubliez pas de laisser un message + j'aime.  


JDBC est une interface importante permettant aux programmes Java de se connecter aux bases de données. C'est un pont important pour la création de programmes et de bases de données Java. Il décrit une bibliothèque standard pour accéder aux bases de données relationnelles et fournit une structure système standard pour les fournisseurs de bases de données. JDBC permet aux utilisateurs d'accéder à toute forme de données de table, le processus d'exécution: 1. Connectez-vous à la source de données 2. Passez les instructions de requête et de mise à jour à la base de données 3. Traitez la réponse de la base de données et renvoyez le résultat.

Si vous n'êtes pas familier avec les instructions SQL couramment utilisées, passez d'abord ici! ! L'instruction SQL la plus couramment utilisée dans l'histoire

Interfaces et bibliothèques de classes JDBC couramment utilisées

 

1.DriverManager: classe de service qui pilote le pilote JDBC

La fonction principale est d'enregistrer le pilote et d'obtenir l'objet Connection

 1. Enregistrez le pilote: indiquez au programme quel fichier jar de pilote de base de données utiliser

//注册与给定的驱动程序 DriverManager
static void registerDriver(Driver driver) ;


//写代码使用 
Class.forName("com.mysql.jdbc.Driver");        

2. Obtenez la connexion à la base de données:

方法: Connexion statique getConnection (String url, String user, String password) 

paramètre:

          url: spécifiez le chemin de la connexion

          utilisateur: nom d'utilisateur

          mot de passe: mot de passe 

          Syntaxe: jdbc: mysql: // adresse IP (nom de domaine): numéro de port / nom de base de données, utilisateur, mot de passe

          Détails: Si vous vous connectez au serveur mysql natif et que le port par défaut du service mysql est 3306, l'url peut être abrégée comme suit: jdbc: mysql: /// nom de la base de données      

//获取数据库连接对象Connection
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","root");

2.Connexion: objet de connexion à la base de données

Chaque connexion représente une session de connexion physique. Pour accéder à la base de données, vous devez d'abord obtenir une connexion à la base de données.

Méthodes courantes:

       1.  Obtenez l'objet pour exécuter SQL

              Instruction createStatement ()

              PreparedStatement prepareStatement (chaîne sql)  

       2.  Affaires de gestion:

             Démarrer la transaction: setAutoCommit (boolean autoCommit): appelez cette méthode pour définir le paramètre sur false, c'est-à-dire démarrer la transaction

             Validez la transaction: commit () 

             Annuler la transaction: rollback () 

3. Instruction: l'objet à exécuter SQL

Statemet est une interface d'outil permettant d'exécuter des instructions SQL. L'objet peut exécuter des instructions DDL, DCL ou DML. Lors de l'exécution de requêtes SQL, il renvoie l'ensemble de résultats de la requête.

Méthode principale

                1.  boolean execute (String sql): Cette méthode peut exécuter n'importe quelle instruction sql. Comprends juste  

                2.  int executeUpdate (String sql): exécute des instructions DML (insert, update, delete), des instructions DDL (create, alter, drop)

                       Valeur de retour: le nombre de lignes affectées, qui peut être utilisé pour déterminer si l'instruction DML est exécutée avec succès

                       Si la valeur de retour est> 0, l'exécution est réussie, sinon elle échoue.

                3.  ResultSet executeQuery (String sql): exécute l'instruction DQL (select)

                       Cette méthode ne peut être utilisée que pour exécuter des instructions de requête et renvoyer l'objet ResultSet correspondant au résultat de la requête. 

 

4. PreparedStatement: l'objet qui exécute SQL

PreparedStatement est un objet Statement précompilé. PreparedStatement est une sous-interface de Statement. Il permet à la base de données de précompiler les instructions SQL. À l'avenir, il vous suffira de modifier les paramètres de commande SQL pour éviter que la base de données ne compile des instructions SQL toutes les temps, donc les performances sont meilleures. SQL précompilé résout le problème de l'injection SQL. SQL précompilé: à utiliser comme espace réservé pour les paramètres.

Méthode commune

        boolean execute (): Exécute l'instruction SQL dans cet objet PreparedStatement, l'instruction peut être n'importe quel type d'instruction SQL.

        int executeUpdate (): objet PreparedStatement pour exécuter cette instruction SQL, il doit s'agir d'instructions de langage de manipulation de données SQL (DML), telles que INSERT, UPDATEou  DELETE; ou ne renvoie aucune instruction SQL, par exemple des instructions DDL.

       ResultSet executeQuery (): Exécute une requête SQL dans cet objet PreparedStatement et renvoie ResultSetl'objet généré par la requête.

Puisque PreparedStatement est une sous-interface de Statement, leurs méthodes communes sont très cohérentes. PreparedStatement est principalement du SQL précompilé, qui résout le problème de l'injection SQL et améliore les performances.

5. ResultSet: objet du jeu de résultats, encapsule les résultats de la requête

ResultSet est un objet de résultat qui contient des méthodes de résultats de requête. ResultSet peut obtenir les données de la colonne via une classe d'index ou de nom de colonne.

Méthode commune

            boolean next (): déplacez le curseur d'une ligne vers le bas pour déterminer si la ligne courante est la fin de la dernière ligne (s'il y a des données), si c'est le cas, elle renvoie false, sinon, elle retourne true

            void beforeFirst (): Positionne le pointeur d'enregistrement du ResultSet à la position initiale avant la première ligne.

            booléen absolu (ligne int): déplacez le pointeur d'enregistrement du jeu de résultats sur la ligne de ligne.

            getXxx (paramètre): obtenir des données

                 Xxx: représente le type de données tel que: int getInt (), String getString ()

                 paramètre:

                    1.  int: représente le numéro de la colonne, à partir de 1 tel que: getString (1)

                    2.  Chaîne: représente le nom de la colonne. Tels que: getDouble ("balance")

Étapes à suivre pour utiliser JDBC

Étapes pour compiler statiquement SQL: instruction d'utilisation

 

 

1.  Importez le package jar du pilote mysql-connector-java-5.1.37-bin.jar

         1. Copiez mysql-connector-java-5.1.37-bin.jar dans le répertoire libs du projet

         2. Faites un clic droit -> Ajouter en tant que bibliothèque

  2.  Enregistrez le pilote

  3.  Obtenez l'objet de connexion à la base de données Connection

  4.  Définissez sql

  5.  Obtenez l'instruction d'objet qui exécute l'instruction sql

  6.  Exécutez sql et acceptez le résultat renvoyé

  7.  Traitement des résultats

  8.  Libérer les ressources

Compilez dynamiquement les étapes SQL: utilisez l'objet PreparedStatement

 

 1.  Importez le package jar du pilote mysql-connector-java-5.1.37-bin.jar

 2.  Enregistrez le pilote

 3.  Obtenez l'objet de connexion à la base de données Connection

 4.  Définissez sql

          * Remarque: à quoi servent les paramètres sql? En tant qu'espace réservé. Tels que: sélectionnez * de l'utilisateur où nom d'utilisateur =? Et mot de passe =?;

  5.  Get PreparedStatement Connection.prepareStatement (String sql) 

  6.  Donner? Affectation:

          * Méthode: setXxx (paramètre 1, paramètre 2)

                  * Paramètre 1 :? Le numéro de position commence à 1

                  * Paramètre 2 :? Valeur de

  7.  Exécutez sql et acceptez le résultat renvoyé sans passer l'instruction sql

  8.  Traitement des résultats

  9.  Libérer les ressources

public static void main(String[]args)throwsException{
	//1.导入驱动jar包
	//2.注册驱动
	Class.forName("com.mysql.jdbc.Driver");
	//3.获取数据库连接对象Connection
	Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","root");
	//4.定义SQL
	Stringsql="update emp set salary=8001 WHERE id=1001;";
	//5.执行SQL语句对象Statement
	Statementstmt=conn.createStatement();
	//6.执行SQL,接收返回结果
	intcount=stmt.executeUpdate(sql);
	//7.处理结果
	System.out.println(count);
	//8.释放资源
	stmt.close();
	conn.close();
}

Exercice de connexion

Outils JDBC

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 * JDBC工具类
 */
public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;
    /**
     * 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
     */
    static{
        //读取资源文件,获取值。

        try {
            //1. 创建Properties集合类。
            Properties pro = new Properties();

            //获取src路径下的文件的方式--->ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res  = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
          
            //2. 加载文件
            pro.load(new FileReader(path));

            //3. 获取数据,赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");
            //4. 注册驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }


    /**
     * 获取连接
     * @return 连接对象
     */
    public static Connection getConnection() throws SQLException {

        return DriverManager.getConnection(url, user, password);
    }

    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
    public static void close(Statement stmt,Connection conn){
        if( stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if( conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if( rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if( stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if( conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

Code de connexion

public class DemoLogin {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入账号:");
        String userName = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        boolean flag = new DemoLogin().login2(userName, password);
        if (flag) {
            System.out.println("登录成功!");
        } else {
            System.out.println("账号或密码错误!");
        }

    }

    public boolean login(String name, String password) {
        //账号密码正确性校验
        if (name == null || password == null) {
            return false;
        }
        Connection conn = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtils.getConn();
            statement = conn.createStatement();
            String sql = "SELECT*FROM login WHERE username='" + name + "'andpassword='" + password + "';";
            System.out.println(sql);
            resultSet = statement.executeQuery(sql);
            return resultSet.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtils.close(conn, statement, resultSet);
        }
        return false;
    }


    //使用PreparedStatement传参
    public boolean login2(String name, String password) {
        //账号密码正确性校验
        if (name == null || password == null) {
            return false;
        }

        Connection conn = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtils.getConn();
            String sql = "SELECT*FROM login WHERE username=? and password=?;";
            //预编译SQL
            statement = conn.prepareStatement(sql);
            System.out.println(sql);
            //给参数赋值
            statement.setString(1, name);
            statement.setString(2, password);
            //执行查询
            resultSet = statement.executeQuery();
            return resultSet.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtils.close(conn, statement, resultSet);
        }
        return false;

    }
}

Avantages importants : si vous pensez que le code ci-dessus est gênant, veuillez passer au blog suivant " Java-Spring JDBC ". Vous constaterez que tant que vous pouvez écrire des instructions SQL, le reste du framework le fera pour vous.

La création n'est pas facile, si ce blog vous est utile, n'oubliez pas de laisser un message + j'aime.  

Je suppose que tu aimes

Origine blog.csdn.net/promsing/article/details/112792723
conseillé
Classement