zoukankan      html  css  js  c++  java
  • Java jdbc相关

    JDBC:java database connectivity --- SUN公司提供的一套操作数据库的标准规范。

    JDBC与数据库驱动的关系:接口与实现的关系。

    JDBC规范:

      DriverManager(类):用于注册驱动

      Connection(接口): 表示与数据库创建的连接

      Statement(接口): 操作数据库sql语句的对象

      ResultSet(接口): 结果集或一张虚拟表

    实现JDBC操作

                  //1、注册驱动

                  //2、创建连接

                  //3、得到执行sql语句的Statement对象

                  //4、执行sql语句,并返回结果

                  //5、处理结果

                  //6、关闭资源

    一  java.sql.DriverManager类:创建连接

      ① 注册驱动

        DriverManager.registerDiver(new com.mysql.jdbc.Driver()); 

        //不建议使用,原因: 导致驱动被注册两次 , 强烈依赖数据库的驱动jar

        解决办法:

        Class.forName("com.mysql.jdbc.Driver);

      ② 与数据库建立连接

       static Connection getConnection(String url, String user, String password) 试图建立到给定数据库 URL 的连接。

        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zzzz","root","pass");

    二  java.sql.Connection 接口 是一个连接

      接口的实现在数据库驱动中, 所有与数据库交互都是基于连接对象的.

      Statement createStatement(); //创建操作sql语句的对象

      Statement stmt = conn.createStatement();

    三  java.sql.Statement 接口 :操作sql语句,并返回相应结果的对象

      接口的实现在数据库驱动中, 用于执行静态sql语句并返回它所生成结果的对象

      ResultSet  executeQuery(String sql) 根据查询语句返回结果集。只能执行select语句。

       int executeUpdate(String sql) 根据执行的DML(insert update delete)语句,返回受影响的行数。

      boolean execute(String sql)  此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。仅当执行select语句,且有返回结果时返回true, 其它语句都返回false;

    四  java.sql.ResultSet 接口 : 结果集(客户端存表数据的对象)

    
    
    
    

    jdbc初试

    
    
     1 package com.javaDemo.jdbcDemo;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 import java.sql.Statement;
     8 
     9 //使用JDBC技术实现查询数据库数据,并显示在控制台中
    10 public class Demo1 {
    11 
    12     public static void main(String[] args) throws Exception {
    13         Connection conn = null;
    14         Statement stmt = null;
    15         ResultSet rs = null;
    16         try {
    17             Class.forName("com.mysql.jdbc.Driver");
    18             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zzzz","root","");
    19             stmt = conn.createStatement();
    20             rs = stmt.executeQuery("select * from users");
    21             //处理结果
    22             while(rs.next()) {
    23                 System.out.println(rs.getObject(1));
    24                 System.out.println(rs.getObject(2));
    25                 System.out.println(rs.getObject(3));
    26                 System.out.println(rs.getObject(4));
    27                 System.out.println(rs.getObject(5));
    28                 System.out.println("----------------");
    29             }
    30         } catch (Exception e) {
    31             e.printStackTrace();
    32         } finally {                //关闭资源
    33             if (rs!=null) {
    34                 try {
    35                     rs.close();
    36                 } catch (Exception e) {
    37                     e.printStackTrace();
    38                 }
               rs=null;
    39 } 40 if (stmt!=null) { 41 try { 42 stmt.close(); 43 } catch (Exception e) { 44 e.printStackTrace(); 45 } 46 stmt = null; 47 } 48 if (conn!=null) { 49 try { 50 conn.close(); 51 } catch (Exception e) { 52 e.printStackTrace(); 53 } 54 conn=null; 55 } 56 } 57 } 58 59 } 60

    jdbc之CRUD(增删改查)
    1.User.java
     1 package com.javaDemo.crud;
     2 
     3 public class User {
     4     private String user_id;
     5     private String first_name;
     6     private String last_name;
     7     public User() {
     8         super();
     9     }
    10     public User(String user_id, String first_name, String last_name) {
    11         this.user_id = user_id;
    12         this.first_name = first_name;
    13         this.last_name = last_name;
    14     }
    15     public String getUser_id() {
    16         return user_id;
    17     }
    18     public void setUser_id(String user_id) {
    19         this.user_id = user_id;
    20     }
    21     public String getFirst_name() {
    22         return first_name;
    23     }
    24     public void setFirst_name(String first_name) {
    25         this.first_name = first_name;
    26     }
    27     public String getLast_name() {
    28         return last_name;
    29     }
    30     public void setLast_name(String last_name) {
    31         this.last_name = last_name;
    32     }
    33     @Override
    34     public String toString() {
    35         // TODO Auto-generated method stub
    36         return user_id + "---" +first_name +"--"+last_name;
    37     }
    38     
    39 }
    View Code

    2.dbinfo.properties

    3.DBUtils.java

     1 package com.javaDemo.util;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 import java.sql.Statement;
     8 import java.util.ResourceBundle;
     9 
    10 public class DBUtils {
    11     private static String driverClass;
    12     private static String url;
    13     private static String username;
    14     private static String password;
    15     static {
    16         //此对象是用于加载properties文件数据的
    17         ResourceBundle rb = ResourceBundle.getBundle("dbinfo");
    18         driverClass = rb.getString("driverClass");
    19         url = rb.getString("url");
    20         username = rb.getString("username");
    21         password = rb.getString("password");
    22         try {
    23             Class.forName(driverClass);
    24         } catch (ClassNotFoundException e) {
    25             e.printStackTrace();
    26         }
    27     }
    28     //得到连接的方法
    29     public static Connection getConnection() throws Exception {
    30         return DriverManager.getConnection(url,username,password);
    31     }
    32     
    33     //关闭资源的方法
    34     public static void closeAll(ResultSet rs,Statement stmt,Connection conn) {
    35         if (rs!=null) {
    36             try {
    37                 rs.close();
    38             } catch (SQLException e) {
    39                 e.printStackTrace();
    40             }
    41             rs = null;
    42         }
    43         if (stmt!=null) {
    44             try {
    45                 stmt.close();
    46             } catch (SQLException e) {
    47                 e.printStackTrace();
    48             }
    49             stmt=null;
    50         }
    51         if (conn!=null) {
    52             try {
    53                 conn.close();
    54             } catch (SQLException e) {
    55                 e.printStackTrace();
    56             }
    57             conn=null;
    58         }
    59     }
    60 }
    View Code

    4.testCRUD.java

     1 package com.javaDemo.crud;
     2 
     3 import java.sql.Connection;
     4 import java.sql.ResultSet;
     5 import java.sql.Statement;
     6 import java.util.ArrayList;
     7 import java.util.List;
     8 
     9 import org.junit.Test;
    10 
    11 import com.itheima.util.DBUtils;
    12 
    13 public class TestCRUD {
    14     @Test
    15     public void testSelect() {
    16         Connection conn = null;
    17         Statement stmt = null;
    18         ResultSet rs = null;
    19         try {
    20             conn = DBUtils.getConnection();
    21             stmt = conn.createStatement();
    22             rs = stmt.executeQuery("select * from users;");
    23             List<User> list = new ArrayList<User>();
    24             while (rs.next()) {
    25                 User u = new User();
    26                 u.setUser_id(rs.getString(1));
    27                 u.setFirst_name(rs.getString(2));
    28                 u.setLast_name(rs.getString(3));
    29                 list.add(u);
    30             }
    31             for (User user : list) {
    32                 System.out.println(user);
    33                 System.out.println("-----------");
    34             }
    35         } catch (Exception e) {
    36             e.printStackTrace();
    37         } finally {
    38             DBUtils.closeAll(rs, stmt, conn);
    39         }
    40         
    41     }
    42     
    43     
    44     @Test
    45     public void testInsert() {
    46         Connection conn = null;
    47         Statement stmt = null;
    48         
    49         try {
    50             conn = DBUtils.getConnection();
    51             stmt = conn.createStatement();
    52             int i = stmt.executeUpdate("INSERT INTO users VALUES(6,'hack','ME','abc','5555','2017',' 2016-11-25 12:54:34','12345');");
    53             if (i>0) {
    54                 System.out.println("success!");
    55             }
    56         } catch (Exception e) {
    57             e.printStackTrace();
    58         } finally {
    59             DBUtils.closeAll(null, stmt, conn);
    60         }
    61         
    62     }
    63     
    64     
    65     @Test
    66     public void testDelete() {
    67         Connection conn = null;
    68         Statement stmt = null;
    69         
    70         try {
    71             conn = DBUtils.getConnection();
    72             stmt = conn.createStatement();
    73             int i = stmt.executeUpdate("DELETE FROM users WHERE user_id=6;");
    74             if (i>0) {
    75                 System.out.println("success!");
    76             }
    77         } catch (Exception e) {
    78             e.printStackTrace();
    79         } finally {
    80             DBUtils.closeAll(null, stmt, conn);
    81         }
    82         
    83     }
    84 }
    View Code

     *************

    为了避免sql注入漏洞,需要使用PreparedStatement来代替Statement.

    PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行

  • 相关阅读:
    routine 程序;日常工作|日常的;例行的
    have great expectation of 寄予厚望
    数据库总结十完整性约束
    Spoken Language One
    Stature 身高,身材;(精神、道德等的)高度
    ultimate与estimate
    dramatically 从戏剧角度;戏剧性地,显著地
    predestined 注定的
    How to lists.
    endanger 危及;使遭到危险
  • 原文地址:https://www.cnblogs.com/Garvey/p/6637779.html
Copyright © 2011-2022 走看看