JDBCデータベース接続ツール、ログインを模倣

## JDBCのようなツールを使用する理由は
、ドライバがロードされたときに、データベースへのJDBC接続を使用して接続を取得するには、リソースの解放は、コードが繰り返され、すべてのコードの再利用性を向上させるために、我々はユーティリティクラスを書くことができ、データベース駆動型の負荷、接続を取得、コードリソース解放は、カプセル化されました。一方、ツールの柔軟性は、プロパティファイルに格納されたキーと値のペアの形式でデータベース情報、URL、ユーザー名とパスワードを駆動することができるようにするために、初期化時に設定ファイルからデータベースに接続するためのツールを読み込み、情報。あなたは、データベース接続を変更する必要がある場合は、あなただけのコードツールクラスを書き換えることなく、設定ファイルを変更する必要があります。

##を達成するためのツール
`` `
インポートにjava.io.IOException;
インポートするjava.io.InputStream;
インポートjava.sqlの* ;.
インポートjava.util.Properties;

/ **
* JDBCツール
* /

//メソッドは、ツールは、私たちがコールするためにとても便利静的である必要があり
、パブリッククラスJDBCUtils {
プライベート静的な文字列のURLを、
プライベート静的な文字列ユーザー;
プライベート静的な文字列のパスワード、
プライベート静的な文字列ドライバ;

/ **
*読んファイルは、値の取得するために一度だけ読まれる必要がある:静的ブロック使用
* /
{静的に
//値のためのリソースファイルを取得します
{試み

/ *
// SRC方式のファイルパスを取得する:ClassLoaderクラスローダー、クラスローダーを取得するために、対応するバイトコードは彼のファイルを取得するため
のClassLoader JDBCUtils.class.getClassLoaderクラスローダ=を();
URLリソースClassLoader.getResource =( " jdbc.properties「);
文字列のパスresource.getPath =(); //戻り値文字列パス
//System.out.println(path);
* /

。入力ストリームは= JDBCUtils.class.getClassLoader()getResourceAsStream( "jdbc.properties")です。
プロプロパティ=新しいプロパティ();
// 2加载文件
pro.load(です)。
// 3获取属性、赋值
URL = pro.getProperty( "URL");
ユーザー= pro.getProperty( "ユーザ")。
パスワード= pro.getProperty( "パスワード");
ドライバ= pro.getProperty( "ドライバ")。
//注册驱动
にClass.forName(ドライバ)
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}キャッチ(ClassNotFoundExceptionが電子){
e.printStackTrace();
}

}


/ **
*取得接続
* @returnリソースを解放接続オブジェクト
* /
{パブリック静的接続のgetConnection()はのSQLExceptionをスローし
たDriverManager.getConnection(URL、ユーザ、パスワード)を返します;
}


/ **
*释放资源
* @param stmtは
* @param CONN
* /
パブリック静的な無効近い(のResultSet rsは、ステートメントstmtは、接続CONN){
(RS = nullで!)であれば{
{みてください
(rs.closeを)。
}キャッチ(のSQLException E){
e.printStackTrace();
}
}


もし(STMT = nullを!){
{しようと
stmt.closeを();
}キャッチ(のSQLException E){
e.printStackTrace();
}
}


もし(connの= nullを!){
{しようと
はconn.closeを();
}キャッチ(のSQLException E){
e.printStackTrace();
}
}

}


パブリック静的ボイド近い(ステートメントSTMT、接続CONN){

もし(STMT = nullを!){
{しようと
stmt.closeを();
}キャッチ(のSQLException E){
e.printStackTrace();
}
}


もし(connの= nullを!){
{しようと
はconn.closeを();
}キャッチ(のSQLException E){
e.printStackTrace();
}
}

}


}

``
のは、テストクラスを書いてみましょう:
## Testクラス

``
インポートutil.JDBCUtils。

インポートjava.sqlの。*;
インポートjava.util.Scanner;

/ **
*キーボード入力ユーザー名とパスワードを経由して
*ユーザーのログインが成功したかどうかを判断します
* /

パブリッククラスjdbcDemo9 {

静的な無効メインパブリック(文字列[] args)を{
//キーボード入力1、ユーザー名とパスワードを受け入れる。。
スキャナスキャナ新新SC =(System.in);
System.out.printlnは(「ユーザー名を入力してください」);
文字列名= sc.nextLine();
System.out.printlnは( "あなたのパスワードを入力してください");
文字列のパスワード= sc.nextLine();
。2 //メソッドを呼び出します
。ブールフラグ=新しいjdbcDemo9() login2(ユーザー名、パスワード);

// 3つの異なるステートメント決意結果出力
IF(フラグに){
するSystem.out.println( "ログイン成功");
}他{
するSystem.out.println( "ユーザ名またはパスワードのエラー");
}

}

/ **
*達成するためのPreparedStatementメソッドを使用してログインします
*を/


パブリックブールlogin2(文字列名、文字列のパスワード){
場合(ユーザ名== nullの||パスワード== nullの){
falseを返します。
}
接続CONN = NULL;
PreparedStatementのてpstmt = NULL;
ResultSetのRS = NULL;

//データベースに接続し、ログインが成功したかどうかを決定する
試み{
コネティカットJDBCUtils.getConnection =();とき、デバッグ表示でCONN = NULL //ここで、次のエラー変数
2定義されたSQLの@
文字列= SQLは「ユーザーからSELECT * =ユーザー名とパスワード= WHERE「; ??
// 3が実行されたSQLオブジェクトを取得し
てpstmt = conn.prepareStatement(SQL);
//に?割り当て
pstmt.setString(1名);
pstmt.setString(2、パスワード);
//クエリを実行するためのパラメータを渡す必要はありません4つの。
RS = pstmt.executeQuery(SQL);
// 5が決定される。
(rs.next戻ります); / /次の行の場合、trueを返します

}キャッチ(のSQLException E){
e.printStackTrace();
}最後に{
JDBCUtils.close(RS、てpstmt、CONN)。
}

falseを返します。
}
}

`` `
##のプロフィール

`` `
URLは= JDBC:MySQLの:// localhostの:? 3306 / DB4 useSslオプション= UTC = falseの場合&serverTimezone
ユーザー=ルート
パスワード= nana980801の
ドライバー= com.mysql.cj.jdbc.Driver
` ``
**注:私はここで使用していますMySQL8.0、以前のバージョンとすべてのプロファイルが多少異なります。あなたはMySQL8.0とそれに対応するバージョン8.0より前の設定ファイルを使用している場合は、エラーになります。**

##業績

`` `
自分のユーザー名を入力してください
zhangsanを
パスワードを入力してください
123
ログインに成功

プロセス終了コード0で終了

`` `

おすすめ

転載: www.cnblogs.com/lichenhui/p/11456904.html