Un avant-goût de JDBC - Comment JAVA utilise-t-il la méthode la plus simple pour se connecter à la base de données

écrit devant

Bien que divers frameworks émergent dans un flux sans fin, ils fournissent parfaitement des API plus pratiques pour exploiter les bases de données.
Mais pour que les débutants pratiquent la syntaxe SQL ou maîtrisent un peu l'utilisation de base de JDBC et l'appliquent à de petits projets qu'ils font pour le plaisir, JDBC vaut toujours la peine d'être appris.
insérez la description de l'image ici

1. Interface de base de données unifiée JDBC

•JDBC (Java DataBase Connectivity), c'est-à-dire la connexion à une base de données java, est une API Java pour l'exécution d'instructions SQL, qui peut fournir un accès unifié à diverses bases de données relationnelles.Il se compose d'un ensemble de classes et d'interfaces écrites en langage Java. JDBC fournit une base de référence à partir de laquelle des outils et des interfaces de niveau supérieur peuvent être créés pour permettre aux développeurs de bases de données d'écrire des applications de base de données.

Composants principaux de JDBC :

  1. DriverManager : gestionnaire de pilotes, correspondant en fonction de l'identifiant de connexion et du pilote de base de données spécifique

  2. Pilote : selon les informations de classe chargées, il est généré et déployé par le gestionnaire, et généralement pas utilisé directement

  3. Connexion : Représente un objet spécifiquement connecté à une base de données

  1. Instruction : utilisez des objets créés à partir de cette interface pour soumettre des instructions SQL à la base de données

insérez la description de l'image ici

  1. ResultSet : ces objets contiennent les données extraites de la base de données après l'exécution de requêtes SQL à l'aide d'objets Statement.

insérez la description de l'image ici

  1. SQLException : cette classe gère toute erreur qui se produit dans l'application de base de données

2. Comment utiliser (partie principale)

  • Préparation préliminaire (notez ici que la bibliothèque mysql-connector-java doit être importée)

insérez la description de l'image ici

  • Exécution SQL

  • Répertoire de fichiers et création de table txt

insérez la description de l'image ici

3. Coder

//文件IO
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
//sql支持
import java.sql.*;
//集合框架,List
import java.util.List;

public class MySQLDemo {
    
    

    //数据库连接基本信息
    //数据库驱动,提供对相应数据库操作支持
    //低版本去掉.cj
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    //数据库地址,用户名和密码
    static final String DB_URL = "jdbc:mysql://localhost:3306/MySQLDemoTest?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
    static final String USER = "root";
    static final String PASS = "123";

    public static void main(String[] args) {
    
    
        //使用url和用户名密码建立连接
        Connection conn = null;
        //Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句
        Statement stmt = null;

        Path pathCreat= Paths.get("src","MySQL","target","classes","CreatTable.txt");

        try{
    
    
            // 注册 JDBC 驱动;载入Class文件信息
            Class.forName(JDBC_DRIVER);

            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            //建立好连接后,获取当前连接的Statement对象
            System.out.println("实例化Statement对象...");
            stmt = conn.createStatement();

            //读取pathCreat目录下的文件内容,组成SQL语句
            StringBuffer sql=new StringBuffer();
            List<String> list=Files.readAllLines(pathCreat.toAbsolutePath());
            for(String m:list)
                sql.append(m);

            //通过Statement的对象执行String类型的SQL语句即可
            System.out.println("删除表...");
            stmt.executeUpdate("DROP TABLE IF EXISTS student;");

            System.out.println("新建表...");
            stmt.executeUpdate(sql.toString());

            System.out.println("插入...");
            for(int i=1;i<10;i++)
            stmt.executeUpdate("INSERT INTO student (name) VALUES('呆瓜"+i+"号')");

            System.out.println("查询...");
            ResultSet rs = stmt.executeQuery("SELECT * FROM student");

            // 展开结果集数据库
            while(rs.next()){
    
    
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");

                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 姓名: " + name);

                System.out.print("\n");
            }

            System.out.println("删除...");
            for(int i=1;i<10;i++){
    
    
                if(i%2==0){
    
    
                    stmt.executeUpdate("DELETE FROM student\n" +
                            "WHERE id="+i+"; ");
                }
            }

            System.out.println("删除后查询...");
            rs = stmt.executeQuery("SELECT * FROM student");

            while(rs.next()){
    
    
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");

                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 姓名: " + name);
                System.out.print("\n");
            }

            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
    
    
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
    
    
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
    
    
            // 关闭资源
            try{
    
    
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
    
    
            }// 什么都不做
            try{
    
    
                if(conn!=null) conn.close();
            }catch(SQLException se){
    
    
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}

4. Autres présentations

Période de développement de la base :

• L'ère sans base de données : il n'y a pas de base de données dédiée et la plupart des données sont stockées sous forme de fichiers

• Base de données hiérarchique : utilisez un modèle hiérarchique pour la conception et le stockage de la base de données

• Base de données réseau : utilisez le modèle de réseau pour la conception et le stockage de la base de données

• Base de données relationnelle : utilisez un modèle relationnel pour la conception et le stockage de la base de données

• Base de données non relationnelle : afin de s'adapter à l'évolutivité horizontale et de gérer une grande quantité d'environnement de données, elle s'est développée très rapidement ces dernières années, et il existe de nombreux types de dérivés

Nouveaux défis et applications :

• Bien qu'à l'ère actuelle du Web 2.0, l'interaction et la co-construction des utilisateurs mettent en avant des exigences plus élevées pour la lecture et l'écriture de bases de données, une grande quantité de données doit être sauvegardée, et ainsi des bases de données NoSQL adaptées à différents domaines sont nées

• Cependant, les bases de données relationnelles occupent toujours une position dominante, et avec le développement continu et l'apprentissage des autres, les bases de données relationnelles inaugureront également une nouvelle étape plus brillante - NewSQL

Je suppose que tu aimes

Origine blog.csdn.net/caqjeryy/article/details/123960099
conseillé
Classement