1. データベースプログラミングの基本条件データベースを操作するコードを実装する場合、実装の前提条件として次の条件を満たす必要があります。 プログラミング言語: 例えば、Java、C++、Pythonなど、これらの言語はすべてデータベースを操作できます データベースに対する操作: 例えば、前の章ではMySQLの操作を紹介しました。Oracle、SQL Serverなどの他のデータベースを実装するには、対応するデータベースの操作もいくつか学ぶ必要があります。 データベース ドライバー パッケージをインストールします。 異なるデータベースでは、異なるプログラミング言語に対して異なるデータベース ドライバー パッケージが提供されます。これらのドライバー パッケージは、対応するデータベースを操作するための API を実装します。 2. Java でのデータベースプログラミング: JDBCデータベースベンダーによってデータベース API の実装方法が異なるため、多くの言語ではこれらのデータベース API を再度カプセル化して、統一された API セットを形成します。このようにして、一連のコードを通じて複数の異なるデータベースを操作することができます。 Java では、このようなカプセル化は、JDBC と呼ばれる統合データベース API をカプセル化する Java 標準ライブラリによって行われます。 拡大する: Java 自体はクロスプラットフォーム言語です。異なるオペレーティング システムでは異なる API が提供されますが、Java 自体はこれらの API をカプセル化し、標準ライブラリで統一されたインターフェイスを提供します。そのため、Java は一度コンパイルすればどこでも実行できます。 JDBC の概要:
3. JDBC アクセス データベース階層4. MySQLデータベース操作の概要前の章では、MySQL に関する知識をいくつか紹介しました。この分野で不足している部分がある場合は、次の記事を通じて直接補足することができます。 第1章リンク: [MySQLデータベース] データベースの基礎知識 第2章 リンク: [MySQL データベース] MySQL データベースの操作とデータ型 第3章 リンク: [MySQL データベース] データテーブルの基本操作 第 4 章 リンク: [MySQL データベース] データベース制約とデータ テーブル設計の原則 第 5 章 リンク: [MySQL データベース] 集計クエリと結合クエリの操作 第6章 リンク: [MySQL データベース] MySQL インデックスとトランザクション 5. MySQLドライバパッケージをダウンロードしてプロジェクトに追加しますMySQL JDBC ドライバーはシステムに含まれていないため、別途ダウンロードしてインストールする必要があります。 主要なデータベースの公式サイトには、対応するデータベース用のJDBCドライバーがありますが、ここではmvnrepositoryなどの中央リポジトリを使用してダウンロードすることをお勧めします。
6. JDBCの使用手順6.1 データベースソースを作成して接続するデータベース ソースを作成します。 データソース dataSource=新しい MysqlDataSource(); // DataSource は Java 標準ライブラリのインターフェースで、「データベースがどこにあるか」を示すために使用されます。 // MysqlDataSourceはMySQLのドライバパッケージです。DataSourceインターフェースを実装するクラスです データベースはサーバープログラムです。DataSource データベースの場所情報を // 1) URL を使用して、接続されたデータベース、データベース IP、ポート、データベース名、エンコード方式、および暗号化するかどうかを指定します ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&setSSL=false"); // 2) データベースにログインするためのユーザー名を設定します ((MysqlDataSource)dataSource).setUser("root"); // 3) データベースにログインするためのパスワードを設定します ((MysqlDataSource)dataSource).setPassword("1234");
データベースに接続し、実際のネットワーク通信を実行します。 接続 connection=dataSource.getConnection();
6.2 実行準備のためのSQL文の構築文字列を介して実行されるSQLを構築する // たとえば、新しい要素操作を実行するには(テーブル名はstudentで、2つの列idとstudentがあります)、 スキャナー scanner = new Scanner (System.in); System.out.print("IDを入力してください: "); int id=スキャナ.nextInt(); System.out.print("名前を入力してください: "); 文字列名 = scanner.next(); 文字列 sql="学生の値に挿入(?,?)";
例えば: PreparedStatement ステートメント = connection.prepareStatement(sql); //setInt メソッドを使用して、SQL ステートメントの最初のワイルドカードを特定の値に置き換えます。statement.setInt(1,id); //setString メソッドを使用して、SQL ステートメント内の 2 番目のワイルドカードを特定の値に置き換えます。statement.setString(2,name); JDBC では、Connection とデータベースを使用して 6.3 SQLを実行し、結果セットを処理する
コンテンツの変更操作(追加、変更、削除)を実行する場合は、int executeUpdate() メソッドを使用します。 int ret = ステートメント.executeUpdate(); // executeUpdate は、操作によって影響を受けた行の数を返します // 戻り値を印刷して、影響を受けた行の数を表示できます System.out.println("ret: "+ret); クエリ操作を実行する場合は、ResultSetのexecuteQuery()メソッドを使用します。 結果セット resultSet=statement.executeQuery(); // executeQuery の戻り結果は、操作の実行後に見つかった一時的なテーブル構造で、ResultSet オブジェクトに格納されます。 // 次に、反復子のトラバースと同様に、次のようにトラバースできます while(resultSet.next()){ // idとnameの2つの列があると仮定します 戻り値: resultSet.getInt(id); 文字列名 = resultSet.getString(name); System.out.println("id="+id+", name="+name); } SQL クエリ ステートメントは、列 (フィールド) 別に編成されたデータ行で 6.4 リソースの解放SQL ステートメントの実行が完了したら、特定のオブジェクトをもう使用しない場合は、接続を閉じて、対応するリソースを解放する必要があります。 // ResultSet オブジェクトが不要になった場合は、接続を閉じる必要があります resultSet.close(); // 接続が不要になったら、接続を閉じる必要があります connection.close(); // PreparedStatement が不要になったら、接続ステートメントを閉じる必要があります。close();
6.5 JDBCプログラミングテンプレート上記の 5 つの手順に従うことで、基本的な Java JDBC プログラミングを実行できます。方法は複数ありますが、まだやり方がわからない場合は、この方法をマスターしてください。最後に、テンプレート全体をまとめます。これに基づいて、Java 言語を使用して MySQL データベースに対してさまざまな操作を実行できます。 パブリック静的voidテスト(){ // 1. データベースソースを作成し、接続する データソース dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); 接続 connection=dataSource.getConnection(); // 2. 実行する操作を準備するための SQL ステートメントを構築します。String sql=""; PreparedStatement ステートメント = connection.prepareStatement(sql); // 3. SQL を実行し、結果セットを処理します。int ret=statement.executeUpdate(); // 4. 実行が完了し、リソースを解放します。statement.close(); 接続を閉じます。 } 7. JDBC共通インターフェースとクラス上記の JDBC プログラミング手順では、次のインターフェースとクラスが導入されており、互いの脆弱性を補完することができます。 7.1 データソースとMysqlDataSource補充: 上記のコードでは、 7.2 接続
方法1: DataSource (データソース) オブジェクトを通じて取得する // データベース ソースを作成します。DataSource dataSource=new MysqlDataSource(); // データベースの詳細を設定します ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); // データベース接続を作成します。Connection connection=dataSource.getConnection(); 方法2: // JDBC ドライバーをロードします Class.forName("com.mysql.cj.jdbc.Driver"); // データベース接続を作成します。Connection connection=DriverManager.getConnection(url); MySQL データベース ドライバーは 上記の 2 つの方法の違い:
7.3 準備されたステートメント
7.4 結果セット
共通の ResultSet オブジェクト メソッド:
8. Java操作データベースインスタンス8.1 テーブルへのデータの追加学生テーブルに学生 ID と名前を追加します。 パブリック静的void testInsert()はSQLExceptionをスローします{ データソース dataSource=新しい MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); 接続 connection=dataSource.getConnection(); スキャナー scanner = new Scanner (System.in); System.out.print("IDを入力してください: "); int id=スキャナ.nextInt(); System.out.print("名前を入力してください: "); 文字列名 = scanner.next(); 文字列 sql="学生の値に挿入(?,?)"; PreparedStatement ステートメント = connection.prepareStatement(sql); ステートメント.setInt(1,id); ステートメント.setString(2,名前); int ret = ステートメント.executeUpdate(); System.out.println("ret: "+ret); ステートメント.close(); 接続を閉じます。 } 8.2 テーブルからデータを削除するstudent という名前のテーブルで、id 条件を満たす student テーブル内のレコードを削除します。 パブリック静的void testDelete()はSQLExceptionをスローします{ データソース dataSource=新しい MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); 接続 connection=dataSource.getConnection(); スキャナー scanner = new Scanner (System.in); System.out.print("削除するIDを入力してください: "); int id=スキャナ.nextInt(); 文字列 sql="delete from student where id=?"; PreparedStatement ステートメント = connection.prepareStatement(sql); ステートメント.setInt(1,id); int ret = ステートメント.executeUpdate(); System.out.println("ret: "+ret); ステートメント.close(); 接続を閉じます。 } 8.3 テーブル内のデータの変更student という名前のテーブルで、id 条件を満たす学生の名前を変更します。 パブリック静的void testUpdate()はSQLExceptionをスローします{ データソース dataSource=新しい MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); 接続 connection=dataSource.getConnection(); スキャナー scanner = new Scanner (System.in); System.out.print("変更したい学生IDを入力してください: "); int id=スキャナ.nextInt(); System.out.print("変更したい生徒名を入力してください: "); 文字列名 = scanner.next(); 文字列 sql="学生セット名を更新します。ID は?"; PreparedStatement ステートメント = connection.prepareStatement(sql); ステートメント.setString(1,名前); ステートメント.setInt(2,id); int ret = ステートメント.executeUpdate(); System.out.println("ret: "+ret); ステートメント.close(); 接続を閉じます。 } 8.4 テーブル内のデータの検索student という名前のテーブル内のすべてのデータを検索します。 パブリック静的void testSelect()はSQLExceptionをスローします{ データソース dataSource=新しい MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); 接続 connection=dataSource.getConnection(); 文字列 sql="select * from student"; PreparedStatement ステートメント = connection.prepareStatement(sql); 結果セット resultSet=statement.executeQuery(); while(resultSet.next()){ 戻り値: 結果セットの id を返します。 文字列名 = resultSet.getString("name"); System.out.println("id = "+id+", name = "+name); } 結果セットを閉じます。 ステートメント.close(); 接続を閉じます。 } これで、MySQL データベースの JDBC プログラミング (Java から MySQL への接続) に関するこの記事は終了です。Java から MySQL への接続に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTMLテキストオーバーフローの2つの一般的な解決策は省略記号を表示することです
>>: JavaScriptのアンチシェイクとスロットリングとは
目次序文LEDトリガー探索を始めるLEDデバイス登録LEDディレクトリ類推によって理解するクラスディ...
1. 画像の下にある数ピクセルの空白を削除するにはどうすればよいですか?コードをコピーコードは次のと...
まず、画像を見てみましょう。今日はこのエフェクトを作成します。 実は、何でもないんです。Web ペー...
目次1. 複雑なページデータ領域をコンポーネントにカプセル化する2. 大きな画像の使用を避ける3. ...
純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...
3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...
目次1. テーブルを作成する1.1. テーブルを作成するための基本構文1.1.1. シンプルなテーブ...
あなたがlinuxerだと仮定すると、 windowserだとは想定しません。Windows ユーザ...
まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...
この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...
フロントエンド開発者としては、IEの落とし穴は避けて通れません。他のブラウザはいいのにIEは壊れてい...
目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...
Navicat がエクスポートしたデータはインポートできません。最後に、MySQLコマンドのインポー...
1: django-admin.py startproject プロジェクト名2: cd プロジェク...
目次序文【ログ取り消し】 【REDOログ】 【バイナリログ】要約する序文MySQL には、REDO ...