zoukankan      html  css  js  c++  java
  • JDBC

    jdbc.properties

    driverClass=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mydb3?useSSL=false&serverTimezone=UTC
    name=root
    password=491183

    JDBCUtil.java

      1 import java.io.FileInputStream;
      2 import java.io.InputStream;
      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.Properties;
      9 
     10 public class JDBCUtil {
     11     
     12     static String driverClass = null;
     13     static String url = null;
     14     static String name = null;
     15     static String password= null;
     16     
     17     static{
     18         try {
     19             //1. 创建一个属性配置对象
     20             Properties properties = new Properties();
     21             InputStream is = new FileInputStream("jdbc.properties");
     22             
     23             //使用类加载器,去读取src底下的资源文件。 后面在servlet
     24 //            InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
     25             //导入输入流。
     26             properties.load(is);
     27             
     28             //读取属性
     29             driverClass = properties.getProperty("driverClass");
     30             url = properties.getProperty("url");
     31             name = properties.getProperty("name");
     32             password = properties.getProperty("password");
     33             
     34         } catch (Exception e) {
     35             e.printStackTrace();
     36         }
     37     }
     38     
     39     /**
     40      * 获取连接对象
     41      * @return
     42      */
     43     public static Connection getConn(){
     44         Connection conn = null;
     45         try {
     46             Class.forName(driverClass);
     47             //静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());
     48             //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
     49             //DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
     50             //2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
     51             conn = DriverManager.getConnection(url, name, password);
     52         } catch (Exception e) {
     53             e.printStackTrace();
     54         }
     55         return conn;
     56     }
     57     
     58     /**
     59      * 释放资源
     60      * @param conn
     61      * @param st
     62      * @param rs
     63      */
     64     public static void release(Connection conn , Statement st , ResultSet rs){
     65         closeRs(rs);
     66         closeSt(st);
     67         closeConn(conn);
     68     }
     69 
     70     
     71     private static void closeRs(ResultSet rs){
     72         try {
     73             if(rs != null){
     74                 rs.close();
     75             }
     76         } catch (SQLException e) {
     77             e.printStackTrace();
     78         }finally{
     79             rs = null;
     80         }
     81     }
     82     
     83     private static void closeSt(Statement st){
     84         try {
     85             if(st != null){
     86                 st.close();
     87             }
     88         } catch (SQLException e) {
     89             e.printStackTrace();
     90         }finally{
     91             st = null;
     92         }
     93     }
     94     
     95     private static void closeConn(Connection conn){
     96         try {
     97             if(conn != null){
     98                 conn.close();
     99             }
    100         } catch (SQLException e) {
    101             e.printStackTrace();
    102         }finally{
    103             conn = null;
    104         }
    105     }
    106 }

    UserDaoImpl.java

      1 package com.itheima.dao.impl;
      2 
      3 import java.sql.Connection;
      4 import java.sql.PreparedStatement;
      5 import java.sql.ResultSet;
      6 import java.sql.SQLException;
      7 import java.sql.Statement;
      8 
      9 import com.itheima.dao.UserDao;
     10 import com.itheima.uitl.JDBCUtil;
     11 
     12 public class UserDaoImpl implements UserDao{
     13 
     14     @Override
     15     public void findAll() {
     16         Connection conn = null;
     17         Statement st = null;
     18         ResultSet rs = null;
     19         try {
     20             //1. 获取连接对象
     21             conn = JDBCUtil.getConn();
     22             //2. 创建statement对象
     23             st = conn.createStatement();
     24             String sql = "select * from t_user";
     25             rs = st.executeQuery(sql);
     26             
     27             while(rs.next()){
     28                 String userName = rs.getString("username");
     29                 String password = rs.getString("password");
     30                 
     31                 System.out.println(userName+"="+password);
     32             }
     33             
     34         } catch (Exception e) {
     35             e.printStackTrace();
     36         }finally {
     37             JDBCUtil.release(conn, st, rs);
     38         }
     39     }
     40 
     41     /*@Override
     42     public void login(String username, String password) {
     43         
     44         Connection conn = null;
     45         Statement st = null;
     46         ResultSet rs = null;
     47         try {
     48             //1. 获取连接对象
     49             conn = JDBCUtil.getConn();
     50             //2. 创建statement对象
     51             st = conn.createStatement();
     52 //            SELECT * FROM t_user WHERE username='admin' AND PASSWORD='10086'
     53             String sql = "select * from t_user where username='"+ username  +"' and password='"+ or +"'";
     54             rs = st.executeQuery(sql);
     55             
     56             if(rs.next()){
     57                 System.out.println("登录成功");
     58             }else{
     59                 System.out.println("登录失败");
     60             }
     61             
     62         } catch (Exception e) {
     63             e.printStackTrace();
     64         }finally {
     65             JDBCUtil.release(conn, st, rs);
     66         }
     67     }*/
     68     
     69     @Override
     70     public void login(String username, String password) {
     71         
     72         Connection conn = null;
     73         Statement st = null;
     74         ResultSet rs = null;
     75         try {
     76             //1. 获取连接对象
     77             conn = JDBCUtil.getConn();
     78             //2. 创建statement对象 
     79             String sql = "select * from t_user where username=? and password=?";
     80             
     81             //预先对sql语句执行语法的校验, ? 对应的内容,后面不管传递什么进来,都把它看成是字符串。 or select 
     82             PreparedStatement ps = conn.prepareStatement(sql);
     83             //? 对应的索引从 1 开始。 
     84             ps.setString(1, username);
     85             ps.setString(2, password);
     86             
     87             rs = ps.executeQuery();
     88             if(rs.next()){
     89                 System.out.println("登录成功");
     90             }else{
     91                 System.out.println("登录失败");
     92             }
     93             
     94         } catch (Exception e) {
     95             e.printStackTrace();
     96         }finally {
     97             JDBCUtil.release(conn, st, rs);
     98         }
     99     }
    100 
    101     
    102     
    103     
    104     @Override
    105     public void insert(String userName, String password) {
    106         Connection conn = null;
    107         PreparedStatement ps = null;
    108         
    109         try {
    110              conn = JDBCUtil.getConn();
    111             String sql = "insert into t_user values(null , ? , ?)";
    112              ps = conn.prepareStatement(sql);
    113              
    114              //给占位符赋值 从左到右数过来,1 代表第一个问号, 永远你是1开始。
    115              ps.setString(1, userName);
    116              ps.setString(2, password);
    117              
    118              
    119             int result = ps.executeUpdate();
    120             if(result>0){
    121                 System.out.println("添加成功");
    122             }else{
    123                 System.out.println("添加失败");
    124             }
    125         } catch (SQLException e) {
    126             e.printStackTrace();
    127         }finally{
    128             JDBCUtil.release(conn, ps);
    129         }
    130     }
    131 
    132     @Override
    133     public void delete(int id) {
    134         Connection conn = null;
    135         PreparedStatement ps = null;
    136         
    137         try {
    138              conn = JDBCUtil.getConn();
    139             String sql = "delete from t_user where id = ?";
    140              ps = conn.prepareStatement(sql);
    141              
    142              //给占位符赋值 从左到右数过来,1 代表第一个问号, 永远你是1开始。
    143              ps.setInt(1, id);
    144              
    145              
    146             int result = ps.executeUpdate();
    147             if(result>0){
    148                 System.out.println("删除成功");
    149             }else{
    150                 System.out.println("删除失败");
    151             }
    152         } catch (SQLException e) {
    153             e.printStackTrace();
    154         }finally{
    155             JDBCUtil.release(conn, ps);
    156         }
    157     }
    158 
    159     @Override
    160     public void update(int id, String name) {
    161         Connection conn = null;
    162         PreparedStatement ps = null;
    163         
    164         try {
    165              conn = JDBCUtil.getConn();
    166             String sql = "update t_user set username=? where id =?";
    167              ps = conn.prepareStatement(sql);
    168              
    169              //给占位符赋值 从左到右数过来,1 代表第一个问号, 永远你是1开始。
    170              ps.setString(1, name);
    171              ps.setInt(2, id);
    172              
    173              
    174             int result = ps.executeUpdate();
    175             if(result>0){
    176                 System.out.println("更新成功");
    177             }else{
    178                 System.out.println("更新失败");
    179             }
    180         } catch (SQLException e) {
    181             e.printStackTrace();
    182         }finally{
    183             JDBCUtil.release(conn, ps);
    184         }
    185     }
    186 
    187 
    188 }

    使用单元测试,测试代码

    1. 定义一个类, TestXXX , 里面定义方法 testXXX.

    2. 添加junit的支持。

      右键工程 --- add Library --- Junit --- Junit4

    3. 在方法的上面加上注解 , 其实就是一个标记。

      @Test public void testQuery() { ... }

    4. 光标选中方法名字,然后右键执行单元测试。 或者是打开outline视图, 然后选择方法右键执行。

  • 相关阅读:
    Vue项目碰到"‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件"报错
    PowerDesigner最基础的使用方法入门学习
    Centos7 上安装mysql遇上的问题:mysql无法正常启动
    微信小程序的Web API接口设计及常见接口实现
    模型数据作渲染优化时遇到的问题
    vertex compression所遇到的问题
    depth and distance
    Linear or non-linear shadow maps?
    实施vertex compression所遇到的各种问题和解决办法
    【转】編譯Ogre1.9 IOS Dependencies及Ogre Source步驟及相關注意事項…
  • 原文地址:https://www.cnblogs.com/samuraihuang/p/10633396.html
Copyright © 2011-2022 走看看