目次
1. Java データベース プログラミング: JDBC
JDBC、Java データベース接続、Java データベース接続。 SQL文を実行するためのJava APIであり、Javaにおけるデータベース接続仕様です。この API は、java.sql.*、javax.sql.* パッケージ内のいくつかのクラスとインターフェイスで構成されており、Java 開発者がデータベースを操作するための標準 API を提供し、複数のリレーショナル データベースへの統合アクセスを提供できます。
2. JDBC動作原理
- Java 言語アクセス データベース操作は完全に抽象インターフェイス プログラミングを指向しています
- データベース アプリケーションの開発は、特定のデータベース ベンダーの API に限定される必要はありません。
- プログラムの移植性が大幅に向上
三、 JDBC使用
- データベース ドライバー パッケージを準備し、プロジェクトの依存関係に追加します。
プロジェクト内にフォルダー lib を作成し、依存関係パッケージ mysql-connector-java-5.1.47.jar を lib にコピーします。次に、jar パッケージをこのプロジェクトの依存関係に設定します。プロジェクトを右クリックし、「モジュール設定」を開き、「モジュール」でプロジェクトをクリックし、依存関係を設定し、+、JARS またはディレクトリをクリックして依存関係に lib フォルダーを設定し、フォルダーを示します。以下の jar パッケージは依存関係として導入されます。
- データベース接続を確立する
MySQL データ接続の URL パラメータ形式は次のとおりです。
jdbc:mysql://サーバー アドレス:ポート/データベース名?パラメータ名=パラメータ値
// 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法
区,并执行该类的静态方法块、静态属性。
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
- 運用コマンド(ステートメント)の作成
//3.构造一个Sql
String sql =" insert into stu(id,name,age) values(1,zhang,3)";
//需要把 Sql语句转化为对象
PreparedStatement statement = connection.prepareStatement(sql);
- アクションコマンドを使用してSQLを実行する
// 查询操作
preparedStatement.executeQuery();
// 新增、修改、删除操作
preparedStatement.executeUpdate();
- 結果セットResultSetを処理します。
//接受结果集合
ResultSet resultSet = statement.executeQuery();
//结果集遍历
while (resultSet.next()){
//移动光标
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println(id+" "+name+" "+age+" ");
}
- リソースをリリースする
try {
if(resultSet != null){
resultSet.close();
}
if(preparedStatement != null){
preparedStatement.close();
}
if(connection != null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("数据库错误");
}
4. JDBC 使用手順の概要
1. データベース接続の作成2. 運用コマンド文の作成3. 運用コマンドを使用してSQLを実行する4. 結果セット ResultSet を処理します。5. リソースを解放する
五. JDBC常用接口和类
5.1 JDBC API
5.2 数据库连接Connection
- 1 つは、DriverManager (ドライバー管理クラス) の静的メソッドを通じて取得する方法です。
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);
- 1 つは、DataSource (データ ソース) オブジェクトを通じて取得する方法です。 実際のアプリケーションで使用されますデータソースオブジェクト
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://localhost:3306/db1?serverTimezone=UTC");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
上記 2 つの方法の違いは次のとおりです。
1. DriverManager クラスで取得した Connection は再利用できず、使用後にリソースが解放されるたびに connection.close() によって物理コネクションが切断されます。
2. DataSource は接続プールのサポートを提供します。接続プールは、初期化中に特定の数のデータベース接続を作成します。これらの接続は再利用できます。データベース接続が使用され、リソースが解放されるたびに、connection.close() を呼び出すと、Conncetion 接続オブジェクトがリサイクルされます。
5.3 Statement对象
SQL を実行するには主に 2 つの方法があります。
- executeQuery() メソッドは、実行後に単一の結果セットを返します。通常、select ステートメントで使用されます。
- executeUpdate() メソッドの戻り値は、影響を受ける行の数を示す整数で、通常は更新、挿入、および削除ステートメントに使用されます。
5.4 ResultSet对象
6. サンプルコード
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestJDBC {
public static void main(String[] args) throws SQLException {
// MysqlDataSource dataSource = new MysqlDataSource();
//dataSource.setUrl();
//1. 创建数据源,即获取数据库的位置
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://localhost:3306/db1?serverTimezone=UTC");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
// 2 .和数据库服务器建立连接
Connection connection = dataSource.getConnection();
//3.构造一个Sql
String sql =" insert into stu(id,name,age) values(?,?,?)";
// String sql =" insert into stu(id,name,age) values(1,zhang,3)";
//需要把 Sql语句转化为对象
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,66);
statement.setString(2,"a");
statement.setInt(3,7);
//4.构造好的sql 发送给服务器;
int n = statement.executeUpdate();
System.out.println("n:"+ n);
//5.最后一步 释放资源
statement.close();
connection.close();
}
}
結論:これで JDBC 関連の共有は終了です。皆さんの学習に役立つことを願っています。ご質問や異なる意見がございましたら、お気軽に残してください。コメントエリアにメッセージを残してください、ganxiezhich~~~