• JDBC的详细使用


    1.首先说一下需要用到的工具:

      ①我这里用的数据库是MySql5.6 ,MySql6.0开始被Oracle收购需要付费了,6.0以下版本免费。

      ②去Maven仓库下载JDBC的jar包 Maven仓库地址:http://mvnrepository.com/  我使用的版本是5.0.5

      ③将jar包放到项目下的lib目录下

    2.接下来给大家上一段简单的使用代码

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.SQLException;
     6 
     7 import com.mysql.jdbc.Driver;
     8 
     9 /**
    10  * 普通的jdbc操作
    11  * 
    12  * @author AdminHeJun
    13  * 
    14  */
    15 public class JdbcNomal {
    16     private static PreparedStatement prepareStatement;
    17     private static ResultSet result;
    18 
    19     public static void main(String[] args) throws Exception {
    20         // 得到数据库连接
    21         Connection connection = getConnection();
    22         // 需要执行的sql
    23         String sql = "select *from info";
    24         prepareStatement = connection.prepareStatement(sql);
    25         result = prepareStatement.executeQuery();
    26 
    27         while (result.next()) {
    28             String id = result.getString(1);
    29             String name = result.getString(2);
    30             String age = result.getString(3);
    31             System.out.println("id=" + id + "---name=" + name + "----age="
    32                     + age);
    33         }
    34         // 关闭结果集
    35         result.close();
    36         // 操作完关闭连接
    37         connection.close();
    38     }
    39 
    40     private static Connection getConnection() {
    41         // 得到数据库连接
    42         Connection connection;
    43         try {
    44             // 注册jdbc驱动
    45             DriverManager.registerDriver(new Driver());
    46             // 参数1:数据库地址 惨数2:数据库用户名 参数3:密码
    47             connection = DriverManager
    48                     .getConnection("jdbc:mysql://127.0.0.1:3306/testdb",
    49                             "root", "hejun254331");
    50             System.out.println("数据库链接成功!");
    51             return connection;
    52         } catch (SQLException e) {
    53             e.printStackTrace();
    54             return null;
    55         }
    56 
    57     }
    58 }

    3.给大家分享一下我在实际开发中对JDBC操作拿到数据库连接的方法

      1 import java.io.InputStream;
      2 import java.sql.Connection;
      3 import java.sql.DriverManager;
      4 import java.sql.ResultSet;
      5 import java.sql.SQLException;
      6 import java.util.Properties;
      7 
      8 import java.sql.PreparedStatement;  9 
     10 /**
     11  * @author AdminHeJun 为了开发的方便起见 我把数据库的连接信息放在了DBConfig.properties配置文件中方便管理
     12  *         此配置文件存储数据的方式与Map的键值对是一样的通过键取相应的值
     13  *         此类中调用了getConnection方法就必须要调用releaseConnection方法释放资源
     14  */
     15 public class JdbcUtils {
     16     // 数据库用户
     17     private static String user;
     18     // 数据库密码
     19     private static String password;
     20     // 数据库连接地址
     21     private static String conUrl;
     22     // 数据库连接驱动完整包名
     23     private static String driverName;
     24     // 此工具类的实例
     25     private static JdbcUtils instance;
     26 
     27     // 获取配置信息的静态代码块
     28     static {
     29         try {
     30             // 得到配置文件的输入流 JdbcUtils.class.getResourceAsStream此方法是获取当前类包名下的文件输入流
     31             InputStream inputStream = JdbcUtils.class
     32                     .getResourceAsStream("DBConfig.properties");
     33             // 创建一个操作配置文件的对象 见名知意 不多做解释了
     34             Properties properties = new Properties();
     35             // 加载配置文件的输入流
     36             properties.load(inputStream);
     37             // 开始获取配置文件里的信息
     38             user = (String) properties.get("user");
     39             password = (String) properties.get("password");
     40             conUrl = (String) properties.get("connUrl");
     41             driverName = (String) properties.get("driverName");
     42             System.out.println("获取配置信息成功!");
     43             System.out.println("user=" + user + "
    password=" + password
     44                     + "
    conUrl=" + conUrl + "
    driverName=" + driverName);
     45         } catch (Exception e) {
     46             System.out.println("获取配置信息出错!");
     47         }
     48     }
     49     // 注册数据库驱动的静态代码块
     50     static {
     51         try {
     52             Class.forName(driverName);
     53             System.out.println("驱动注成功!");
     54         } catch (Exception e) {
     55             System.out.println("驱动注册失败!");
     56         }
     57     }
     58 
     59     // 私有的构造方法防止外界直接new对象 这里是通过 getInstance方法来获取此类的实例
     60     private JdbcUtils() {
     61 
     62     }
     63 
     64     // 获取此类的实例 这种设计方法也就是常说的java单列设计模式
     65     public static JdbcUtils getInstance() {
     66         if (instance == null) {
     67             // 防止多线程同时操作
     68             synchronized (JdbcUtils.class) {
     69                 instance = new JdbcUtils();
     70             }
     71         }
     72         return instance;
     73     }
     74 
     75     // 得到数据库连接对象
     76     public Connection getConnection() {
     77         try {
     78             Connection connection = DriverManager.getConnection(conUrl, user,
     79                     password);
     80             System.out.println("数据库连接成功!");
     81             return connection;
     82         } catch (SQLException e) {
     83             e.printStackTrace();
     84             System.out.println("数据库连接失败!");
     85         }
     86         return null;
     87     }
     88 
     89     // 释放连接资源
     90     public void releaseConnection(Connection connection,
     91             PreparedStatement pStatement, ResultSet rSet) {
     92         try {
     93             // 关闭结果集
     94             if (rSet != null) {
     95                 rSet.close();
     96             }
     97             // 关闭sql语句执行对象
     98             if (pStatement != null) {
     99                 pStatement.close();
    100             }
    101             // 关闭数据库连接
    102             if (connection != null) {
    103                 connection.close();
    104             }
    105         } catch (SQLException e) {
    106             e.printStackTrace();
    107             System.out.println("关闭资源出错!");
    108         }
    109     }
    110 }

    调用演示

     1 public static void main(String[] args) throws Exception {
     2         // 得到连接
     3         Connection connection = JdbcUtils.getInstance().getConnection();
     4         String sql = "select *from info";
     5         PreparedStatement prepareStatement = connection.prepareStatement(sql);
     6         ResultSet resultSet = prepareStatement.executeQuery();
     7         while (resultSet.next()) {
     8             String id = resultSet.getString(1);
     9             String name = resultSet.getString(2);
    10             String age = resultSet.getString(3);
    11             System.out.println("id=" + id + "---name=" + name + "----age="
    12                     + age);
    13         }
    14         // 释放资源
    15         JdbcUtils.getInstance().releaseConnection(connection, prepareStatement,
    16                 resultSet);
    17 
    18     }

    打印结果:

    DBConfig.properties文件截图

  • 相关阅读:
    docker常用命令
    redis常用命令
    Spring boot redis自增编号控制 踩坑
    docker 安装 nginx
    Linux常用命令记录
    leetcode-120. 三角形最小路径和
    leetcode-229.求众数(二)
    leetcode-169.求众数
    冒泡排序学习笔记
    快速排序学习笔记
  • 原文地址:https://www.cnblogs.com/hejiaoshou/p/7470064.html
Copyright © 2020-2023  润新知