jdbcUtilツールクラス単純パッケージ
7697 ワード
まずJDBCのいくつかのコアAPIについて述べます
java.sql.* JDBC仕様はすべて現在のパッケージ内です
java.sql.DriverManagerドライバ管理クラス、ツールクラス--|static void registerDriver(java.sql.Driver driver);ロードドライバを登録し、現在のプログラムで使用する-|static java.sql.Connection getConnection(String url, String user, String password); 現在のデータベース接続オブジェクト、対応するURL、user、passwordを取得
interface java.sql.接続データベース接続インタフェースsql.Statement createStatement(); データベースSQL文搬送元を取得するには、SQL文をMySQLデータベースに搬送するだけで、SQL文の判断は行われません.–java.sql.PreparedStatement PrepareStatement(String sql); データベースのSQL文の前処理の対象を取得して、SQL文を前処理することができて、いくつかSQLの異常を判断して、MySQLデータベースの圧力を下げて、実行の効率を提供します
interface java.sql.StatementデータベースSQL文運搬工-|int executeUpdate(String sql);データベースの内容を変更するためにinsert、update、delete、create、dropなどの文を実行します.戻り値のタイプはintタイプで、戻りデータは現在のSQL文がMySQLデータを実行する操作に影響を与える行数です.|java.sql.ResultSet executeQuery(String sql); select文を実行し、データベースクエリー結果セットオブジェクトを取得します.ResultSet Never null
interface java.sql.PreparedStatementデータベースSQL文プリプロセッシング運搬業者【ポイント】-|int executeUpdate()PreparedStatement実装クラスオブジェクトの取得時にSQL文、insert、update、deleteをプリプロセッシングする.主な操作内容はデータベースに対するデータ修正である.【SQL注入】-|java.sql.ResultSet executeQuery()を効果的に防止できる; PreparedStatementインプリメンテーションクラスオブジェクトの取得時にSQL文、select文を前処理し、クエリー結果セットオブジェクトを取得します.【SQL注入】-|setXXX(int index,Object value);SQL文実行に必要なパラメータsetInt setFloat setを設計する
interface java.sql.ResultSetクエリ結果セット-|boolean next();現在の結果セットの対象が引き続き遍歴できるかどうかを判断する-|XXX getXXX(int index);指定された下付きフィールドのデータを取得します.|XXX getXXX(String fieldName);指定したフィールド名に対応するデータの取得
対応db.propertiesファイルuser=root password=123456 url=jdbc:mysql://localhost:3306/javaeestudy?useSSL=true driverClass=com.mysql.jdbc.Driver
パッケージパッケージimport java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;
/** ロードドライバ ドライバをロードするプロセスは、JdbcUtilツールクラスがメモリにロードされたとき 対応する操作を直接完了
データベース接続の取得 現在データベースを取得する方法をより簡単にし、データベースURL、データベースユーザー名User、データベースパスワード を考慮しないでください. password
補助クローズリソース 対外提供の方法は、十分で、多種の情況を満たす必要があり、しかも非常の方法
よりよく使用するために、現在のJdbcUtilツールクラス内のすべてのメソッドは、静的メンバーメソッド
プロファイルを使用する方式でsrcディレクトリ下のdbから.propertiesファイルでJDBC接続データベースを読み込むために必要なリソース userユーザー名、passwordパスワード、url JDBC接続データベースのアドレス、driverClass駆動クラス名 IO流!!
*/public class JdbcUtil{//必要なパラメータをいくつか用意private static String user=null;private static String password=null;private static String url=null;
}
C 3 P 0スレッドプールとjarパッケージcomを使用する.mysql.jdbc.Driver jdbc:mysql://localhost:3306/javaeestudy?useSSL=true root 123456 5 5 10 40 200 5
package util;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.*;
public class JdbcUtil {
}
URL統合リソースロケータ、アドレスjdbc:mysql://localhost:3306/データベース名?useSSL=true jdbc:JDBC仕様の総プロトコルmysql:現在のデータベース選択であり、サブプロトコル//localhost:3306:データベースのホスト名であり、IPアドレス3306はMySQLデータベースのデフォルトポート番号/javaee 1906:MySQLデータベースに通知され、現在動作しているデータベースはjavaee 1906=>use javaee 1906である
JDBCのURL=プロトコル名+サブプロトコル名+データソース名.aプロトコル名は常に「jdbc」である.bサブプロトコル名は、JDBCドライバの作成者によって決定される.cデータソース名には、ユーザやパスワードなどの情報も含まれる場合がある.これらの情報は、単独で提供することもできる.いくつかの一般的なデータベース接続----------------------------------------------------------------------------------------------駆動:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@machine_name:port:dbname注:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルトは1521
------------------------------------mysql----------駆動:com.mysql.jdbc.Driver URL:jdbc:mysql://machine_name:port/dbname注:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルト3306
-----------------------------------------------------SQL Server------------------------駆動:com.microsoft.jdbc.sqlserver.SQLServerDriver URL:jdbc:microsoft:sqlserver://<:port>;DatabaseName=注意:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルトは1433
---------------------------------------------------------------------------------------駆動:com.ibm.db2.jdbc.app.DB 2 Driver URL:jdbc:db 2://<:port>/dbname注:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルトは5000
java.sql.* JDBC仕様はすべて現在のパッケージ内です
java.sql.DriverManagerドライバ管理クラス、ツールクラス--|static void registerDriver(java.sql.Driver driver);ロードドライバを登録し、現在のプログラムで使用する-|static java.sql.Connection getConnection(String url, String user, String password); 現在のデータベース接続オブジェクト、対応するURL、user、passwordを取得
interface java.sql.接続データベース接続インタフェースsql.Statement createStatement(); データベースSQL文搬送元を取得するには、SQL文をMySQLデータベースに搬送するだけで、SQL文の判断は行われません.–java.sql.PreparedStatement PrepareStatement(String sql); データベースのSQL文の前処理の対象を取得して、SQL文を前処理することができて、いくつかSQLの異常を判断して、MySQLデータベースの圧力を下げて、実行の効率を提供します
interface java.sql.StatementデータベースSQL文運搬工-|int executeUpdate(String sql);データベースの内容を変更するためにinsert、update、delete、create、dropなどの文を実行します.戻り値のタイプはintタイプで、戻りデータは現在のSQL文がMySQLデータを実行する操作に影響を与える行数です.|java.sql.ResultSet executeQuery(String sql); select文を実行し、データベースクエリー結果セットオブジェクトを取得します.ResultSet Never null
interface java.sql.PreparedStatementデータベースSQL文プリプロセッシング運搬業者【ポイント】-|int executeUpdate()PreparedStatement実装クラスオブジェクトの取得時にSQL文、insert、update、deleteをプリプロセッシングする.主な操作内容はデータベースに対するデータ修正である.【SQL注入】-|java.sql.ResultSet executeQuery()を効果的に防止できる; PreparedStatementインプリメンテーションクラスオブジェクトの取得時にSQL文、select文を前処理し、クエリー結果セットオブジェクトを取得します.【SQL注入】-|setXXX(int index,Object value);SQL文実行に必要なパラメータsetInt setFloat setを設計する
interface java.sql.ResultSetクエリ結果セット-|boolean next();現在の結果セットの対象が引き続き遍歴できるかどうかを判断する-|XXX getXXX(int index);指定された下付きフィールドのデータを取得します.|XXX getXXX(String fieldName);指定したフィールド名に対応するデータの取得
対応db.propertiesファイルuser=root password=123456 url=jdbc:mysql://localhost:3306/javaeestudy?useSSL=true driverClass=com.mysql.jdbc.Driver
パッケージパッケージimport java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;
/**
*/public class JdbcUtil{//必要なパラメータをいくつか用意private static String user=null;private static String password=null;private static String url=null;
// 1. ,
static {
try {
// Properties , ,
Properties properties = new Properties();
// db.properties
InputStream in = new FileInputStream("./src/db.properties");
// Properties db.properties
properties.load(in);
// db.properties
user = properties.getProperty("user");
password = properties.getProperty("password");
url = properties.getProperty("url");
Class.forName(properties.getProperty("driverClass"));
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
/**
*
*
* @return java.sql.Connection , null
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
*
* @param connection java.sql.Connection
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* ,statement
* @param connection java.sql.Connection
* @param statement java.sql.Statement SQL
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* ,statement ,resultSet
* @param connection java.sql.Connection
* @param statement java.sql.Statement SQL
* @param resultSet java.sql.ResultSet
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
C 3 P 0スレッドプールとjarパッケージcomを使用する.mysql.jdbc.Driver jdbc:mysql://localhost:3306/javaeestudy?useSSL=true root 123456 5 5 10 40 200 5
package util;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.*;
public class JdbcUtil {
/*
C3P0 , src c3p0-config.xml
*/
private static ComboPooledDataSource pool = new ComboPooledDataSource();
/**
*
*
* @return java.sql.Connection , null
*/
public static Connection getConnection() {
Connection conn = null;
try {
//
conn = pool.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
*
* @param connection java.sql.Connection
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* ,statement
* @param connection java.sql.Connection
* @param statement java.sql.Statement SQL
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* ,statement ,resultSet
* @param connection java.sql.Connection
* @param statement java.sql.Statement SQL
* @param resultSet java.sql.ResultSet
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
URL統合リソースロケータ、アドレスjdbc:mysql://localhost:3306/データベース名?useSSL=true jdbc:JDBC仕様の総プロトコルmysql:現在のデータベース選択であり、サブプロトコル//localhost:3306:データベースのホスト名であり、IPアドレス3306はMySQLデータベースのデフォルトポート番号/javaee 1906:MySQLデータベースに通知され、現在動作しているデータベースはjavaee 1906=>use javaee 1906である
JDBCのURL=プロトコル名+サブプロトコル名+データソース名.aプロトコル名は常に「jdbc」である.bサブプロトコル名は、JDBCドライバの作成者によって決定される.cデータソース名には、ユーザやパスワードなどの情報も含まれる場合がある.これらの情報は、単独で提供することもできる.いくつかの一般的なデータベース接続----------------------------------------------------------------------------------------------駆動:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@machine_name:port:dbname注:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルトは1521
------------------------------------mysql----------駆動:com.mysql.jdbc.Driver URL:jdbc:mysql://machine_name:port/dbname注:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルト3306
-----------------------------------------------------SQL Server------------------------駆動:com.microsoft.jdbc.sqlserver.SQLServerDriver URL:jdbc:microsoft:sqlserver://<:port>;DatabaseName=注意:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルトは1433
---------------------------------------------------------------------------------------駆動:com.ibm.db2.jdbc.app.DB 2 Driver URL:jdbc:db 2://<:port>/dbname注:machine_name:データベースが存在するマシンの名前;port:ポート番号、デフォルトは5000