JDBC の味 - JAVA はデータベースに接続するために最も簡単な方法をどのように使用しますか

前に書いてある

さまざまなフレームワークが後を絶たずに登場していますが、それらはデータベースを操作するためのより便利な API を完璧に提供します。
しかし、初心者が SQL 構文を練習したり、基本的な JDBC の使い方を少しマスターしたり、それを趣味で行う小規模なプロジェクトに適用したりするには、JDBC を学ぶ価値があります。
ここに画像の説明を挿入

1. 統合データベースインターフェースJDBC

•JDBC (Java DataBase Connectivity)、つまり Java データベース接続は、SQL ステートメントを実行するための Java API であり、さまざまなリレーショナル データベースへの統一アクセスを提供でき、Java 言語で記述されたクラスとインターフェイスのセットで構成されます。JDBC は、データベース開発者がデータベース アプリケーションを作成できるようにする高レベルのツールとインターフェイスを構築できるベースラインを提供します。

JDBC コアコンポーネント:

  1. DriverManager: ドライバー マネージャー。接続識別子と特定のデータベース ドライバーに従って照合します。

  2. ドライバー: ロードされたクラス情報に従って、マネージャーによって生成およびデプロイされ、通常は直接使用されません。

  3. 接続: データベースに特に接続されているオブジェクトを表します。

  1. ステートメント: このインターフェイスから作成されたオブジェクトを使用して、SQL ステートメントをデータベースに送信します。

ここに画像の説明を挿入

  1. ResultSet: これらのオブジェクトは、Statement オブジェクトを使用して SQL クエリを実行した後にデータベースから取得したデータを保持します。

ここに画像の説明を挿入

  1. SQLException: このクラスは、データベース アプリケーションで発生するエラーを処理します。

2. 使い方(本体)

  • 事前準備(ここで、mysql-connector-java ライブラリをインポートする必要があることに注意してください)

ここに画像の説明を挿入

  • SQLの実行

  • ファイルディレクトリとテーブル作成テキスト

ここに画像の説明を挿入

3. コード

//文件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. その他の紹介

データベース開発期間:

• データベースのない時代: 専用のデータベースはなく、ほとんどのデータはファイルの形式で保存されます。

• 階層データベース: データベースの設計と保存に階層モデルを使用します。

•ネットワーク データベース: データベースの設計とストレージにネットワーク モデルを使用します。

• リレーショナル データベース: データベースの設計と保存にリレーショナル モデルを使用します。

•非リレーショナルデータベース:水平的なスケーラビリティに適応し、大量のデータ環境に対応するため、近年急速に発展しており、多くの派生型が存在します。

新しい課題と応用:

・Web 2.0の時代では、ユーザーの対話や共同構築によりデータベースの読み書きに対する要求が高まっていますが、大量のデータを保存する必要があるため、さまざまな分野に適したNoSQLデータベースが誕生しました。

• しかし、リレーショナル データベースは依然として支配的な地位を占めており、継続的な開発と他者からの学習により、リレーショナル データベースもより輝かしい新しい段階 - NewSQL を迎えることになります。

おすすめ

転載: blog.csdn.net/caqjeryy/article/details/123960099