JAVA-DBConnection

17603 ワード

JAVA-DBConnection(JDBC)


JAVAでdbへのアクセスが許可されているAPIをJDBCと呼びます.
JAVA DataBase Connetivity

の手配を


まずjavaとmysqlは互いに異なるプログラムです.
Javaがsqlにアクセスするにはjava構築パスを作成する必要があります.
外部jarファイルを利用してjavaに接続するapiです.
通常のjarファイルは次のパスにあります.
C:\Program Files (x86)\MySQL\Connector J 8.0
mysql-connector-java-8.0.27.jar파일을 import 
ファイルを参照するには、「プロジェクト」>「右クリック」>「プロパティ」>「java build path」>「外部JARs」>「jarファイルの追加」を選択し、適用および閉じる
上記の手順を完了すると、私たちが入れたjarファイルを含む参照ライブラリが私たちのプロジェクトに作成されます.

設定コードの作成


dbconnectionのたびに接続コードを記述し、接続し、クエリー文でデータをcrud操作するのは毎回面倒で、私たちのプロジェクトがデータベースが必要なプロジェクトであれば、一度だけ接続する可能性は低いです.
したがって、オブジェクトをクラスとして作成して使用すると、必要に応じてオブジェクト化をインポートすることがより効率的になります.
したがって、他のクラスまたはパッケージで参照するためにクラスとして作成します.
必要に応じてクラスのタイプを決定します.
ここではまずpublicを用いてclassを生成する.
public class DBconn{
	
}
次のjavaのsql組み込み型Connectionを使用して変数を作成します.
次のオブジェクトをプライベートオブジェクトに設定して、他のクラスで使用しないようにし、メソッドを使用してアクセスするためにメソッドを個別に作成します.
他のパッケージやクラスで使用するために、共通およびグローバルで使用される静的にします.
public class DBconn{
	private static Connection conn;
    public static Connection getConnection(){
    	
    }
}
次はClassforName()を呼び出し、Driver自身を初期化してDriveManagerに登録します.つまり、開発者と管理されていない静的オブジェクトは、DriverManagerに自分で登録できます.
パラメータは渡さず、呼び出しのみですが、ここでは対応するjdbcドライバを文字列として記述します.
また、作成したドライブをtrycatch文として作成し、オブジェクトが参照されていないときにエラーを返す必要があります.
自動完成で便利です.
cntl + shift + z
public class DBconn{
	private static Connection conn;
    public static Connection getConnection(){
    	try{
        	Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("드라이버 로딩성공!");
        }catch(ClassNotFoundException e){
        	System.out.println("실패");
        }
    }
}
ドライブが正常にロードされた場合、dbmsにアクセスするコードはMysqlとsqlのアイデンティティパスワードで作成されます.
driverManagerの組み込み関数getConnectionを使用すると、dbmsのパス、アイデンティティ、パスワードを渡してデータベースにアクセスできます.
また、trycatch文として接続が作成され、catch文が接続され、SQLExceptionエラーが接続によって返されます.
次に、getConnection関数を以前に作成したConnectionオブジェクトに挿入します.
オブジェクトがnullであるかどうかを判断し、接続文を実行するか、データベース接続を含むconnを返すかを決定します.
import java.sql.Connection;

public class DBconn {
// DB관련 jar 파일을 build하여 import 시킨 다음
//	DB와 연결해야 한다ㅣ. 
//	connection 관련 객체를 담는 static 변수를 private로 담는다. 
	private static Connection conn;
//	해당 변수를 실행 시 dbconnection이 되도록 한다.
	public static Connection getConnection() {
		if(conn == null) {
//			conn 객체에 접근하지 않는 경우 아래의 코드를 실행한다.
			try {
//				데이터베이스에 접근하는 드라이브를 실행
				Class.forName("com.mysql.cj.jdbc.Driver");
				System.out.println("드라이버 로딩성공!");
				
				String url = "jdbc:mysql://localhost:3306/web0315";
				String user = "아이디";
				String password = "비밀번호";
// 드라이브메니저의 내장메소드를 이용해 우리가 사용할 dbms정보를 넘겨주고 있다.
				conn = DriverManager.getConnection(url, user, password);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}catch(SQLException sqle) {
				System.out.println("실패");
			}
		}
		return conn;
	}
}
ここに着いたら、データベースを使用する準備ができています.
使用方法は次のとおりです.
sql文には、変数、Connectionオブジェクトの初期化、PreparedStatementの初期化が含まれます.
用意する.
使用するsql文を作成し、connに作成したDBクラスのメソッドを含めます.
接続オブジェクトとしてPreparedStatementを使用するconnのPreparedStatementメソッドを使用してsql文を含む
ここまですれば準備ができている.
今は使い方次第です.
私たちはexecuteQueryメソッドを使用してselectを使用し、他のsql文を使用する場合はexecuteUpdateメソッドを使用します.
この方法を使用した場合は、変数としてresultSetに入れ、持ってきた情報を出力すればよい.
package study2;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBTest {
	public static void main(String[] args) {
		String sql = "";
		Connection conn;
		PreparedStatement ps;
		
		try {
			sql = "select * from user";
			conn = DBconn.getConnection();
			ps = conn.prepareStatement(sql);
			
			ResultSet rs = ps.executeQuery();
			String [] getdata = {"useridx", "userid",
					"userpw","username","userage","userphone","useraddr"};
			while(rs.next()) {
				String result = "";
				for (int i = 0; i < getdata.length; i++) {
					result += rs.getString(i+1) + " / ";					
				}
				System.out.println(result);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
クエリー文で他の変数を使用する場合は?の草案を作る
?文字列接続を使用して変数名を作成する必要がある場合、またはsql文に直接「」を含める必要がある場合はsetStringを使用します.executeを使用するように、prepareStatementメソッド付きpsオブジェクト名に貼り付けます.
// 첫번째 ? 에 strdata 넣어줘
ps.setString(1, strdata);
ps.executeUpdate();