JDBC接続データベースメソッドのカプセル化、およびクエリーデータメソッドのカプセル化
46055 ワード
(前の記事では、データベースを接続する方法と、eclipseがデータベース情報を操作する方法について詳しく説明しましたが、ここでは主にパッケージについて説明します.)
主な内容:一般的な接続データベーステスト データベースに接続する方法をクラスにカプセル化し、 をテストする.単純な挿入テーブルインスタンス クエリーデータインスタンス クエリのデータベースをカプセル化する情報 情報カプセル化後のクエリーデータベース 一.一般的なデータベース接続テスト
二.私たちは情報処理機能を書くたびに接続を書くことはできません.これは面倒です.では、今後のアプリケーションを便利にするために、データベース接続をカプセル化します.
具体的な実装手順は次のとおりです.
1.変数の定義:
private static String DRIVER_CLASS; private static String URL; private static String USERRNAME; private static String PASSWORD;
2.あなたが作成したeclipseルートの下にFileファイルPropertiesを新規作成します.
ファイルの内容は、定義した変数が指すオブジェクトです.
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test? useUnicode=true&characterEncoding=UTF8 user=h4 pass=111
3.Propertiesオブジェクトの構築:Properties p=new Properties()
4. java.ioの下のクラスFileInputStreamの方法;FileInputStream
5.3で構築した変数pで資料をダウンロードする:p.load(fis);
6.getProperty()を利用する.パラメータの取得:
DRIVER_CLASS=p.getProperty("driver"); URL=p.getProperty("url"); USERRNAME=p.getProperty("user"); PASSWORD=p.getProperty("pass");
7.データベースに接続する方法getConection()を書く.
8.データベースを閉じる方法close(Connection conn)を書く.
作成後のコードは次のとおりです.
では、パッケージ化したら、テストクラスを書いて、接続をテストします.
三.接続に成功しました.データベースにテーブルを簡単に挿入するインスタンスを書きます.
四.クエリー・データベース・データのインスタンスを書きます.(3つの方法があります)
五.四の中に従業員の資料を調べる情報を書きましたが、時々保存して便利にしてからもっと検索しなければなりません.どうすればいいですか.はい、パッケージです.
六.カプセル化されたクエリーと、上にカプセル化されていない前に少し変わります.
実際には、ループ結果セットをカプセル化し続けることができます.
一人で情報を調べたら?このようにカプセル化することもできます.
転載先:https://www.cnblogs.com/wuziyue/p/4846602.html
主な内容:
1 public class TestConnection1 {
2 public static void main(String[] args) throws Exception {
3 Class.forName("com.mysql.jdbc.Driver");
4 String url="jdbc:mysql://localhost:3306/test?"// url
5 + "useUnicode=true&characterEncoding=UTF8";//
6 String user="h4";
7 String pass="111";
8 Connection conn=DriverManager.getConnection(url, user, pass);
9
10 System.out.println(conn+", ");
11 conn.close();
12 }
13 }
二.私たちは情報処理機能を書くたびに接続を書くことはできません.これは面倒です.では、今後のアプリケーションを便利にするために、データベース接続をカプセル化します.
具体的な実装手順は次のとおりです.
1.変数の定義:
private static String DRIVER_CLASS; private static String URL; private static String USERRNAME; private static String PASSWORD;
2.あなたが作成したeclipseルートの下にFileファイルPropertiesを新規作成します.
ファイルの内容は、定義した変数が指すオブジェクトです.
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test? useUnicode=true&characterEncoding=UTF8 user=h4 pass=111
3.Propertiesオブジェクトの構築:Properties p=new Properties()
4. java.ioの下のクラスFileInputStreamの方法;FileInputStream
(String name)
:ファイルシステム内のパス名FileInputStream
によって指定された実際のファイルへの接続を開くことによってname
を作成します.このファイルの中の資料を取得します:FileInputStream fis=new FileInputStream(「db.properties」);5.3で構築した変数pで資料をダウンロードする:p.load(fis);
6.getProperty()を利用する.パラメータの取得:
DRIVER_CLASS=p.getProperty("driver"); URL=p.getProperty("url"); USERRNAME=p.getProperty("user"); PASSWORD=p.getProperty("pass");
7.データベースに接続する方法getConection()を書く.
8.データベースを閉じる方法close(Connection conn)を書く.
作成後のコードは次のとおりです.
1 public class jdbcutil {
2 private static String DRIVER_CLASS;
3 private static String URL;
4 private static String USERRNAME;
5 private static String PASSWORD;
6 private static Properties p=new Properties();
7 static{
8 try {
9 FileInputStream fis=new FileInputStream("db.properties");
10 p.load(fis);
11 DRIVER_CLASS=p.getProperty("driver");
12 URL=p.getProperty("url");
13 USERRNAME=p.getProperty("user");
14 PASSWORD=p.getProperty("pass");
15 Class.forName(DRIVER_CLASS);
16 fis.close();
17 } catch (IOException e) {
18 e.printStackTrace();
19 } catch (ClassNotFoundException e) {
20 e.printStackTrace();
21 }
22 }
23 public static Connection getConection(){
24 Connection conn=null;
25 try{
26 conn=DriverManager.getConnection(URL, USERRNAME, PASSWORD);
27 }
28 catch (Exception e) {
29 e.printStackTrace();
30 }
31 return conn;
32 }
33 public static void close(Connection conn) {
34 try {
35 if (conn != null)
36 conn.close();
37 } catch (Exception e) {
38 e.printStackTrace();
39 }
40 }
41
42 }
では、パッケージ化したら、テストクラスを書いて、接続をテストします.
1 public class TestConnection2 {
2
3 public static void main(String[] args) throws Exception {
4 Connection conn=jdbcutil.getConection();//
5 System.out.println(conn+", ");
6 jdbcutil.close( conn);//
7 }
8 }
三.接続に成功しました.データベースにテーブルを簡単に挿入するインスタンスを書きます.
1 public class TestDDl {
2
3 public static void main(String[] args) {
4 Connection conn=null;
5 Statement stmt=null;
6 conn=jdbcutil.getConection();//
7 String createTableSql= " create table user_test1( "+//
8 " id int, "+
9 " name varchar(32) , "+
10 " password varchar(32) , "+
11 " birthday date "+
12 " ) ";
13 try {
14 stmt=conn.createStatement();
15 stmt.execute(createTableSql);
16 } catch (SQLException e) {
17 e.printStackTrace();
18 }
19 jdbcutil.close(null, stmt, conn);//
20 }
21 }
四.クエリー・データベース・データのインスタンスを書きます.(3つの方法があります)
1 public class TestDQL {
2 public static void main(String[] args){
3 Connection conn=null;//
4 Statement stmt=null;
5 ResultSet rs=null;
6 String sql="select * from employees";//sql
7 conn=jdbcutil.getConection();
8 try {
9 stmt=conn.createStatement();// Statement
10 rs=stmt.executeQuery(sql);// sql
11 while(rs.next()){
12 System.out.print(rs.getInt(1)+",");
13 System.out.print(rs.getString(2)+",");//
14 System.out.print(rs.getString(3)+",");
15 System.out.print(rs.getString(4)+",");
16 System.out.println(rs.getString(5));
17 }
18 } catch (SQLException e) {
19 e.printStackTrace();
20 }finally{
21 jdbcutil.close(rs,stmt,conn);//
22 }
23 }
24 }
// :
1 public class TestDQl2 {
2
3 public static void main(String[] args) {
4 Connection conn=null;
5 Statement stmt=null;
6 ResultSet rs=null;
7 String sql="select * from employees";
8 conn=jdbcutil.getConection();
9 try {
10 stmt=conn.createStatement();
11 rs=stmt.executeQuery(sql);
12 while(rs.next()){
13 System.out.print(rs.getInt("userid")+",");//
14 System.out.print(rs.getString("employee_id")+",");
15 System.out.print(rs.getString("last_name")+",");
16 System.out.print(rs.getString("salary")+",");
17 System.out.println(rs.getString("department_id"));
18 }
19 } catch (SQLException e) {
20 e.printStackTrace();
21 }finally{
22 jdbcutil.close(rs,stmt,conn);
23 }
24 }
25 }
1 // :
2 public class TestDQL3 {
3 public static void main(String[] args) {
4 Connection conn=null;
5 Statement stmt=null;
6 ResultSet rs=null;
7 String sql="select * from employees";
8 conn=jdbcutil.getConection();
9 try {
10 stmt=conn.createStatement();
11 rs=stmt.executeQuery(sql);
12 while(rs.next()){
13 int index=1;
14 System.out.print(rs.getInt(index++)+",");
15 System.out.print(rs.getString(index++)+",");
16 System.out.print(rs.getString(index++)+",");
17 System.out.print(rs.getString(index++)+",");
18 System.out.println(rs.getString(index++));
19 }
20 } catch (SQLException e) {
21 e.printStackTrace();
22 }finally{
23 jdbcutil.close(rs,stmt,conn);
24 }
25 }
26 }
五.四の中に従業員の資料を調べる情報を書きましたが、時々保存して便利にしてからもっと検索しなければなりません.どうすればいいですか.はい、パッケージです.
1 public class employees implements Serializable {
2 private Integer userid;
3 private String employee_id;
4 private String last_name;
5 private String salary;
6 private String department_id;
7
8 public employees() {
9 super();
10 }
11
12 public employees(String employee_id, String last_name, String salary, String department_id) {
13 super();
14 this.employee_id = employee_id;
15 this.last_name = last_name;
16 this.salary = salary;
17 this.department_id = department_id;
18 }
19
20 @Override
21 public String toString() {
22 return "employees [userid=" + userid + ", employee_id=" + employee_id + ", last_name=" + last_name
23 + ", salary=" + salary + ", department_id=" + department_id + "]";
24 }
25
26 public Integer getUserid() {
27 return userid;
28 }
29
30 public void setUserid(Integer userid) {
31 this.userid = userid;
32 }
33
34 public String getEmployee_id() {
35 return employee_id;
36 }
37
38 public void setEmployee_id(String employee_id) {
39 this.employee_id = employee_id;
40 }
41
42 public String getLast_name() {
43 return last_name;
44 }
45
46 public void setLast_name(String last_name) {
47 this.last_name = last_name;
48 }
49
50 public String getSalary() {
51 return salary;
52 }
53
54 public void setSalary(String salary) {
55 this.salary = salary;
56 }
57
58 public String getDepartment_id() {
59 return department_id;
60 }
61
62 public void setDepartment_id(String department_id) {
63 this.department_id = department_id;
64 }
65 }
六.カプセル化されたクエリーと、上にカプセル化されていない前に少し変わります.
1 public class TestDQL4 {
2 public static void main(String[] args) {
3 Connection conn=null;
4 Statement stmt=null;
5 ResultSet rs=null;
6 List emps=new ArrayList<>();//
7
8 String sql="select * from employees";
9
10 conn=jdbcutil.getConection();//
11
12 try {
13 stmt=conn.createStatement();
14 rs=stmt.executeQuery(sql);
15 while(rs.next()){//
16 int index=1;
17 employees emp=new employees();//
18 emp.setUserid(rs.getInt(index++));//
19 emp.setEmployee_id(rs.getString(index++));
20 emp.setLast_name(rs.getString(index++));
21 emp.setSalary(rs.getString(index++));
22 emp.setDepartment_id(rs.getString(index++));
23 emps.add(emp);//
24 }
25 } catch (SQLException e) {
26 e.printStackTrace();
27 }finally{
28 jdbcutil.close(rs,stmt,conn);//
29 }
30 for(employees emp:emps){//
31 System.out.println(emp);
32 }
33 }
34 }
実際には、ループ結果セットをカプセル化し続けることができます.
1 public class TestDQL5 {
2
3 public static void main(String[] args) {
4 Connection conn=null;
5 Statement stmt=null;
6 ResultSet rs=null;
7 List emps=new ArrayList<>();
8
9 String sql="select * from employees";
10
11 conn=jdbcutil.getConection();
12
13 try {
14 stmt=conn.createStatement();
15 rs=stmt.executeQuery(sql);
16 emps=resultSetToEmployees(rs);
17 } catch (SQLException e) {
18 e.printStackTrace();
19 }finally{
20 jdbcutil.close(rs,stmt,conn);
21 }
22 for(employees emp:emps){
23 System.out.println(emp);
24 }
25 }
26 public static List resultSetToEmployees(ResultSet rs){
27 List emps=new ArrayList<>();
28 try {
29 while(rs.next()){
30 int index=1;
31 employees emp=new employees();
32 emp.setUserid(rs.getInt(index++));
33 emp.setEmployee_id(rs.getString(index++));
34 emp.setLast_name(rs.getString(index++));
35 emp.setSalary(rs.getString(index++));
36 emp.setDepartment_id(rs.getString(index++));
37 emps.add(emp);
38 }
39 } catch (SQLException e) {
40 e.printStackTrace();
41 }
42
43 return emps;
44 }
45 }
一人で情報を調べたら?このようにカプセル化することもできます.
1 public class TestDQL6 {
2 public static void main(String[] args) {
3 Connection conn=null;
4 Statement stmt=null;
5 ResultSet rs=null;
6 List emps=new ArrayList<>();
7
8 String sql="select * from employees";
9
10 conn=jdbcutil.getConection();
11
12 try {
13 stmt=conn.createStatement();
14 rs=stmt.executeQuery(sql);
15 while(rs.next()){
16 employees emp=resultSetToEmployee(rs);
17 emps.add(emp);
18 }
19 } catch (SQLException e) {
20 e.printStackTrace();
21 }finally{
22 jdbcutil.close(rs,stmt,conn);
23 }
24 for(employees emp:emps){
25 System.out.println(emp);
26 }
27 }
28 public static employees resultSetToEmployee(ResultSet rs){
29 employees emp=null;
30 try {
31 int index=1;
32 emp=new employees();
33 emp.setUserid(rs.getInt(index++));
34 emp.setEmployee_id(rs.getString(index++));
35 emp.setLast_name(rs.getString(index++));
36 emp.setSalary(rs.getString(index++));
37 emp.setDepartment_id(rs.getString(index++));
38 } catch (SQLException e) {
39 e.printStackTrace();
40 }
41 return emp;
42 }
43 }
転載先:https://www.cnblogs.com/wuziyue/p/4846602.html