zoukankan      html  css  js  c++  java
  • 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 + "	" + 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 + "	" + 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 +"	" + 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+"	");
    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+"	");
    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 }
  • 相关阅读:
    文本转换成音频流
    把文本以图片的形式保存
    list集合绑定在datagridview上时如何实现排序
    厘米转换成像素
    sql经典语句收集
    存储过程加密
    跨服务器sql操作
    lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
    [Big Data]Hadoop详解一
    CDN技术详解及实现原理
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8179893.html
Copyright © 2011-2022 走看看