JDBC连接数据库方法的封装,以及查询数据方法的封装(精华)

主要内容:

  • 一般的连接数据库测试
  • 把连接数据库的方法封装成一个类和测试
  • 一个简单的插入表实例
  • 查询数据实例
  • 封装查询的数据库的信息
  • 封装信息后的查询数据库

一.一般的数据库连接测试

 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 }

四.我们在写一个查询数据库数据的实例。(有三种方法)

 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<employees> 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<employees> 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<employees> resultSetToEmployees(ResultSet rs){
27              List<employees> 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<employees> 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     
时间: 2024-10-05 13:58:30

JDBC连接数据库方法的封装,以及查询数据方法的封装(精华)的相关文章

JDBC连接数据库(MySql)步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。

主要内容:  JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能. 把十一个功能都放在一起. 一.JDBC连接数据库(编辑)步骤(主要有六个步骤).  1.注册驱动: Class.formName("com.mysql.jdbc.Driver");  2.获取连接:(1) param1:  要连接数据库的url-----> String url="jdbc:mysql:/

sql serve 跨服务器查询数据方法

 今天在做sql server 的数据查询时,需要用到跨服务器连接,在这里记录一下,如何在sql server 中,使用跨服务器查询的方法,有以下步骤. /* 创建中间数据库链接 exec sp_addlinkedserver 'MiddleData', ' ', 'SQLOLEDB', '数据库连接实例,或者IP' exec sp_addlinkedsrvlogin 'MiddleData', 'false',null, '数据库连接帐号', '数据库连接密码' */ 创建好连接之后,就可

Spring查询方法的注入 为查询的方法注入某个实例

//这里是客户端的代码 当调用CreatePersonDao这个抽象方法或者虚方法的时候由配置文件返回指定的实例 为查询的方法注入某个实例 start static void Main(string[] args)        {            IApplicationContext ctx = ContextRegistry.GetContext();            Console.WriteLine("查询方法");            ObjectFactor

在数据库中查询数据——方法封装

<?php class DBDA { public $host="localhost"; //数据库地址 public $uid = "root"; //数据库用户名 public $pwd = ""; //密码 //执行sql语句,返回相应的结果 //参数:$sql代表执行的sql语句:$type是sql语句类型0代表查询,1代表其他:$db代表操作的数据库 public function Query($sql,$type=0,$db=&

java中的jdbc连接数据库方法及应用

jdbc连接数据库的口诀:猪脸特直观 import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Demo03 { public static void main(String[] args) thr

JDBC查询数据实例

在本教程将演示如何在JDBC应用程序中,查询数据库的一个表中数据记录. 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中数据库表中查询数据记录. 要执行以下示例,需要用实际用户名和密码替换这里用户名(username)和密码(password). MySQL或数据库已启动并运行. 所需步骤 使用JDBC应用程序向表中查询数据记录需要以下步骤: 导入包:需要包含包含数据库编程所需的JDBC类的包. 大多数情况下,使用import java.sql.*就足够了.

jdbc连接数据库方法及一些相关知识点

刚学习完java jdbc连接数据库,总结其中的2种方法 第一种: 代码如下: import java.sql.Connection;import java.sql.Driver;//import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties; import org.junit.Test;// public class Demo1 { //连接数据库的URL private Stri

MongoDB数据库中查询数据(下)

在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一个对象,该对象中各属性名用来显示指定在查询结果中需要包含或排除的字段.该属性值可以为1或0,当属性值为1时,代表需要在查询结果中包含该字段,当属性值为0时,代表需要在查询结果中排除该字段.注意:在使用fields属性时,需要统一使用属性值1或属性值0来设置除_id字段之外的所有字段. 首先我们来看下数据库中有哪些数据,如下所示: 下面我

SpringMVC——项目启动时从数据库查询数据

SpringMVC项目中遇到这样的问题: 1.很多数据字典需要从数据库中查询: 2.懒得修改SQL语句: 3.想在项目中声明静态变量存储数据字典,但是希望这个字典可以在项目启动时进行加载. 当遇到这样的问题时,可以通过实现org.springframework.beans.factory.InitializingBean接口进行实现这一功能. 只需要实现afterPropertiesSet()方法就将在项目扫描完注解时调用这一方法,在这个方法内调用数据库查询的方法,查出所有数据字典,并保存在静态