博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习笔记之初识JDBC
阅读量:4625 次
发布时间:2019-06-09

本文共 6281 字,大约阅读时间需要 20 分钟。

初识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 conn62     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 }

 

转载于:https://www.cnblogs.com/xuzhaocai/p/8179893.html

你可能感兴趣的文章
LR Socket 测试demo
查看>>
vue 路由用法
查看>>
poj2104 划分树 区间K大 在线 无修改
查看>>
java可变参数Varargs
查看>>
MySQL 5.7 安装完成后,首次登陆的几个问题
查看>>
Javascript笔记
查看>>
[禅悟人生]在每日的劳作中寻求充实与安宁
查看>>
跟锦数学2017年下半年 (不再更新网页版)
查看>>
Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
查看>>
.NET基础拾遗(5)多线程开发基础
查看>>
Debug!Debug!Debug!
查看>>
python之subprocess模块详解--小白博客
查看>>
nmap扫描工具
查看>>
SQL server函数大全
查看>>
玩转JavaScript正则表达式
查看>>
Sticky Footer,完美的绝对底部
查看>>
Android动态加载——加载已安装APK中的类
查看>>
Python元组与列表的区别和联系?
查看>>
网络ISO分层结构
查看>>
人生第一次的自己完成的atm机
查看>>