java学习笔记之初识JDBC

初识JDBC

一.JDBC概念

  jdbc 英文全称:java database  connectivity  ,是java访问数据库的一套规范,通俗可以理解为,java为连接数据库提供的一套类和接口

  jdbc与数据库驱动的关系图:

  

二.jdbc简单使用 

  使用流程:(在使用之前需要将驱动的jar导入进去)

    ①:注册驱动

    ②:连接数据库

    ③:获得sql语句的执行平台

    ④:执行sql语句

    ⑤:处理结果

    ⑥:释放资源

  执行流程图:

 

  代码实现(数据增删改操作):

 

 1 public class Demo13 {
 2     public static void main(String[] args)throws Exception {
 3         //1.注册驱动
 4         /*
 5          * 因为查看Driver源码发现这个类静态代码块中已经注册了驱动,我们也就没必要二次注册
 6          * 注意:jdk1.6以后也可以省略注册驱动这一步,不写系统自动注册
 7          * 贴上源码:
 8          *   static {
 9          *       try {
10          *           java.sql.DriverManager.registerDriver(new Driver());
11          *       } catch (SQLException E) {
12          *           throw new RuntimeException("Can't register driver!");
13          *       }
14          *   }
15          *   
16          *   
17          */
18         //DriverManager.registerDriver(new Driver());
19         Class.forName("com.mysql.jdbc.Driver");
20         
21         
22         //2.连接数据库
23         /*
24          * 参数一: 连接ip port 数据库名称  固定格式
25          * 参数二:数据库用户名
26          * 参数三:数据库密码
27          */
28         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root");
29         //3.获得sql语句执行平台
30         Statement stat= con.createStatement();
31         //4.执行sql语句
32         /*
33          * executeUpdate()方法是用来执行增删改语句的
34          * 参数是sql语句
35          * 返回值是个int类型的,执行成功几条语句
36          */
37         int result= stat.executeUpdate("insert into car values(null,'宝马')");
38         //5.处理结果
39         /*
40          * 在这里结果的处理其实就是需要看业务逻辑了,一般是个判断这条语句执行成功了没有
41          */
42         if(result>0){
43             System.out.println("执行成功");
44         }else{
45             System.out.println("执行失败");
46         }
47         //6.释放资源
48         stat.close();
49         con.close();
50     }
51 
52 }

 

下面来研究查询操作的代码:

 1 public class Demo03JDBC {
 2     public static void main(String[] args) throws ClassNotFoundException, SQLException {
 3         // 1:注册驱动
 4         Class.forName("com.mysql.jdbc.Driver");
 5         // 2:获取和服务器的连接
 6         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day04db", "root", "123");
 7         // 3:向服务器发送sql指令
 8         // 3.1 获取Statement接口的实现类对象
 9         Statement stat = conn.createStatement();
10         // 3.2 执行sql (查询数据)
11         ResultSet rs = stat.executeQuery("select * from product");
12 
13         // 4:处理返回的结果集(知道列名和列的类型)
14       /*
15         while (rs.next()) {// 判断有没有下一行数据
16             int cid = rs.getInt("cid"); // 取出cid列
17             String cname = rs.getString("cname"); // 取出came列
18             System.out.println(cid + "\t" + cname);
19         }
20       */
21         //处理返回的结果集(不知道列名,知道列的类型):通过列的索引来获取
22     /*
23         while (rs.next()) {// 判断有没有下一行数据
24             int cid = rs.getInt(1); // 取出第一列
25             String cname = rs.getString(2); // 取出第二列
26             System.out.println(cid + "\t" + cname);
27         }
28     */
29     //处理返回的结果集(不知道列名,不知道列的类型):通过列的索引来获取
30         /*
31         while (rs.next()) {// 判断有没有下一行数据
32             Object obj1 = rs.getObject(1);
33             Object obj2 = rs.getObject(2);
34             System.out.println(obj1 +"\t" + obj2);
35         }
36         */
37    //处理返回的结果集(不知道列名,不知道列的类型,不知道多少列):通过列的索引来获取    
38         ResultSetMetaData metaData = rs.getMetaData(); //获取表的原始数据
39         //获取列数
40         int count = metaData.getColumnCount();
41         while(rs.next()){ //13次
42             for (int i = 1; i <=count; i++) { //4次
43                 Object obj = rs.getObject(i);
44                 System.out.print(obj+"\t");
45             }
46             System.out.println();
47         }
48         
49         // 5:释放资源
50         rs.close();
51         stat.close();
52         conn.close();
53     }
54 }

 

 

简单封装的jdbc工具类:(主要是体会思想)

 1 /*
 2  * 此文件用于封装JDBC的常用功能:
 3  * 
 4  * 1:封装驱动的注册 
 5  * 2:封装数据库的连接
 6  * 3:封装资源的释放
 7  * 
 8  * JDK1.6之后,Java会自动注册驱动
 9  */
10 public class MyJDBCUtils {
11     private static String classDriverName = null;
12     private static String url = null;
13     private static String username = null;
14     private static String password = null;
15     // 1:封装驱动的注册
16     /*
17      * 由于驱动的注册只需要执行一次,所以可以将该代码封装在静态代码块
18      * 由于解析Properties只需要解析一次,所以还是将解析的代码放在静态代码块
19      */
20     static {
21         try {
22             //1:创建Properties对象
23             Properties prop = new Properties();
24             //2:将文件的数据读取到集合
25             prop.load(new FileInputStream("jdbc.properties"));
26             //3:获取集合的数据
27             classDriverName = prop.getProperty("driverClassName");
28             url = prop.getProperty("url");
29             username = prop.getProperty("username");
30             password = prop.getProperty("password");
31             
32             
33             Class.forName(classDriverName);
34         } catch (Exception e) {
35             e.printStackTrace();
36         }
37     }
38 
39     // 2:封装数据库的连接
40     public static Connection getConnection() throws SQLException {
41         Connection conn = DriverManager.getConnection(url, username, password);
42         return conn;
43     }
44     
45     //封装方法:处理结果集
46     public static void printResultSet(ResultSet rs) throws SQLException{
47         ResultSetMetaData metaData = rs.getMetaData();
48         int count = metaData.getColumnCount();
49         
50         while(rs.next()){
51             for (int i = 1; i <= count; i++) {
52                 Object obj = rs.getObject(i);
53                 System.out.print(obj+"\t");
54             }
55             System.out.println();
56         }
57         
58     }
59     
60 
61     // 3:封装资源的释放 null stat conn
62     public static void closeAll(ResultSet rs, Statement stat, Connection conn) {
63         if (rs != null) {
64             try {
65                 rs.close();
66             } catch (SQLException e) {
67                 e.printStackTrace();
68             }
69         }
70         if (stat != null) {
71             try {
72                 stat.close();
73             } catch (SQLException e) {
74                 e.printStackTrace();
75             }
76         }
77         if (conn != null) {
78             try {
79                 conn.close();
80             } catch (SQLException e) {
81                 e.printStackTrace();
82             }
83         }
84     }
85 }

 

posted @ 2018-01-02 23:56  猿上生活  阅读(289)  评论(0编辑  收藏  举报