转自: http://blog.csdn.net/tobetheender/article/details/52772157

Java通过JDBC 进行MySQL数据库操作

原创 2016年10月10日 16:46:41
  • 4407

一:前言

在测试工作中难免会和数据库打交道,可能大家对数据库语句都比较熟,比如常见的增删改查等,但是当我们在做自动化测试时,比如接口测试,大部分请求参数,可能都是从数据库中取值,并且接口返回值最后都会记录在数据库中,这样前提就需要和数据库建立连接,才能进行读写操作。


二:JDBC是什么

java提供了一个API也就是JDBC(Java Data Base Connectivity),可以为多种关系数据库提供统一访问和操作,它由一组用Java语言编写的类和接口组成。

  • 没有jdbc之前 
    java开发人员需要维护不同的数据库的驱动程序,如果数据库的底层实现改变,驱动程序可能会随之改变!!

  • 有了jdbc之后: 
    java开发人员只需维护java应用和一套规范,也就是jdbc接口。数据库厂商提供具体的java驱动程序,数据库厂商的底层实现改变,厂商随之更新驱动程序,而不影响java应用程序!!


三:实现步骤

  1. 导入数据包 
    需要包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.* 就可以了.

  2. 添加JDBC驱动程序包 
    添加jar程序驱动包http://www.mysql.com/downloads/connector/j,初始化驱动程序,可以与数据库打开一个通信通道。

  3. 打开数据库连接 
    需要使用DriverManager.getConnection() 方法创建一个Connection对象,它代表与数据库的物理连接。

  4. 执行数据库操作 
    需要使用类型声明的对象建立并提交一个SQL语句到数据库。

  5. 从结果集中提取数据 
    要求使用适当的关于ResultSet.getXXX()方法来检索结果集的数据。

  6. 清理环境 
    需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。

JDBCUtil类

  • 主程序
  

  1. package com.jdbc;
  2.  
  3. //导入数据包
  4. import java.io.InputStream;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.sql.Statement;
  10. import java.util.Properties;
  11.  
  12. /**
  13. * @author Charlie.chen
  14. *
  15. */
  16.  
  17. public class JDBCUtil{
  18.  
  19. // 驱动包名和数据库url
  20. private static String url = null;
  21. private static String driverClass = null;
  22. // 数据库用户名和密码
  23. private static String userName = null;
  24. private static String password = null;
  25.  
  26. /**
  27. * 初始化驱动程序
  28. * 静态代码块中(只加载一次)
  29. */
  30. static{
  31. try {
  32. //读取db.properties文件
  33. Properties prop = new Properties();
  34.  
  35. /**
  36. * 使用类路径的读取方式
  37. * / : 斜杠表示classpath的根目录
  38. * 在java项目下,classpath的根目录从bin目录开始
  39. * 在web项目下,classpath的根目录从WEB-INF/classes目录开始
  40. */
  41. InputStream in = JDBCUtil.class.getResourceAsStream("/db.properties");
  42.  
  43. //加载文件
  44. prop.load(in);
  45. //读取信息
  46. url = prop.getProperty("url");
  47. driverClass = prop.getProperty("driverClass");
  48. userName = prop.getProperty("user");
  49. password = prop.getProperty("password");
  50.  
  51. //注册驱动程序
  52. Class.forName(driverClass);
  53. } catch (Exception e) {
  54. e.printStackTrace();
  55. System.out.println("驱程程序注册出错");
  56. }
  57. }
  58.  
  59. /**
  60. * 打开数据库驱动连接
  61. */
  62. public static Connection getConnection(){
  63. try {
  64. Connection conn = DriverManager.getConnection(url, userName, password);
  65. return conn;
  66. } catch (SQLException e) {
  67. e.printStackTrace();
  68. throw new RuntimeException(e);
  69. }
  70. }
  71.  
  72. /**
  73. * 清理环境,关闭连接(顺序:后打开的先关闭)
  74. */
  75. public static void close(Connection conn,Statement stmt,ResultSet rs){
  76. if(rs!=null)
  77. try {
  78. rs.close();
  79. } catch (SQLException e1) {
  80. e1.printStackTrace();
  81. throw new RuntimeException(e1);
  82. }
  83. if(stmt!=null){
  84. try {
  85. stmt.close();
  86. } catch (SQLException e) {
  87. e.printStackTrace();
  88. throw new RuntimeException(e);
  89. }
  90. }
  91. if(conn!=null){
  92. try {
  93. conn.close();
  94. } catch (SQLException e) {
  95. e.printStackTrace();
  96. throw new RuntimeException(e);
  97. }
  98. }
  99. }
  100.  
  101. public static void main(String[] args) {
  102.  
  103. Connection conn = null;
  104. Statement stmt = null;
  105. ResultSet rs = null;
  106.  
  107. conn=JDBCUtil.getConnection();
  108. try {
  109. stmt=conn.createStatement();
  110. //准备sql操作语句
  111. String sql= "SELECT id, first, last, age FROM YourDBName";
  112. rs = stmt.executeQuery(sql);
  113.  
  114. //从结果集中提取数据
  115. while(rs.next()){
  116. int id = rs.getInt("id");
  117. int age = rs.getInt("age");
  118. String first = rs.getString("first");
  119. String last = rs.getString("last");
  120.  
  121. System.out.print("ID: " + id);
  122. System.out.print(", Age: " + age);
  123. System.out.print(", First: " + first);
  124. System.out.println(", Last: " + last);
  125. }
  126. } catch (SQLException e) {
  127. // TODO Auto-generated catch block
  128. e.printStackTrace();
  129. }finally{
  130. JDBCUtil.close(conn, stmt, rs);
  131. }
  132. }
  133. }
  • JDBC配置文件db.properties
    1. url=jdbc:mysql://localhost/yourDBName
    2. user=root
    3. password=root
    4. driverClass=com.mysql.jdbc.Driver

    四:JDBC核心API

    JDBC接口核心的API

    • java.sql.*
    • javax.sql.*

      1. |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
      2. |- connect(url, properties): 连接数据库的方法。
      3. url: 连接数据库的URL
      4. URL语法: jdbc协议:数据库子协议://主机:端口/数据库
      5. user 数据库的用户名
      6. password 数据库用户密码
      7. |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
      8. |-registerDriver(driver) : 注册驱动类对象
      9. |-Connection getConnection(url,user,password); 获取连接对象
      10.  
      11. |- Connection接口: 表示java程序和数据库的连接对象。
      12. |- Statement createStatement() 创建Statement对象
      13. |- PreparedStatement prepareStatement(String sql) 创建PreparedStatement对象
      14. |- CallableStatement prepareCall(String sql) 创建CallableStatement对象
      15.  
      16. |- Statement接口: 用于执行静态的sql语句
      17. |- int executeUpdate(String sql) 执行静态的更新sql语句(DDLDML
      18. |- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL
      19.  
      20. |-PreparedStatement接口:用于执行预编译sql语句
      21. |- int executeUpdate() 执行预编译的更新sql语句(DDLDML
      22. |-ResultSet executeQuery() 执行预编译的查询sql语句(DQL
      23.  
      24. |-CallableStatement接口:用于执行存储过程的sql语句(call xxx
      25. |-ResultSet executeQuery() 调用存储过程的方法
      26.  
      27. |- ResultSet接口:用于封装查询出来的数据
      28. |- boolean next() 将光标移动到下一行
      29. |-getXX() : 获取列的值

      五:常见的SQL执行语句

      1. String sql = "CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender VARCHAR(2))";
      2. //发送sql语句,执行sql语句,得到返回结果
      3. int count = stmt.executeUpdate(sql);
      4.  
      5. String sql = "SELECT * FROM student";
      6. //执行sql
      7. ResultSet rs = stmt.executeQuery(sql);
      8.  
      9. String sql = "INSERT INTO student(NAME,gender) VALUES('李四','女')";
      10. int count = stmt.executeUpdate(sql);
      11.  
      12. String sql = "UPDATE student SET NAME='"+name+"' WHERE id="+id+"";
      13.  
      14. String sql = "DELETE FROM student WHERE id="+id+"";

      六:补充

      数据库url制定

      当加载的驱动程序,可以建立程序中使用DriverManager.getConnection()方法的连接。为方便参考,让列出了三个重载DriverManager.getConnection()方法:

      getConnection(String url)

      getConnection(String url, Properties prop)

      getConnection(String url, String user, String password)

      在这里,每个表单需要一个数据库URL。数据库的URL是指向数据库地址。

      制定一个数据库URL是大多数用在建立连接相关。 
      如图列出了下来流行的JDBC驱动程序名和数据库的URL。 

      参考资料

      http://www.yiibai.com/jdbc/jdbc-sample-code.html#

Java通过JDBC 进行MySQL数据库操作的更多相关文章

  1. ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库

    1.MySQL存储过程   1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if  while)等等 的sql语句   1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...

  2. java用JDBC连接MySQL数据库的详细知识点

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

  3. Java使用JDBC连接MySQL数据库

    1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...

  4. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...

  5. 【转】Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  6. Java 通过JDBC连接Mysql数据库的方法和实例

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  7. Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  8. Java:jdbc连接mysql数据库

    安装eclipse和mysql的步骤这里不赘述了. 1.一定要下jar包 要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包.低版本的jar包 ...

  9. JDBC连接mysql数据库操作详解

    1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

随机推荐

  1. JNI技术简介-android学习之旅(92)

    分为5步 !!!注意本地方法是java中的方法,本地函数指的是c语言中的对应函数 1.在java类中声明本地方法 2.使用javah命令,生成包含jni本地函数原型的头文件 3. 实现jni本地函数 ...

  2. Mac 下安装安卓 apk 文件

    Mac 下安装安卓 apk 文件 在windows上有比较多的第三方软件可以使用,双击就可以将apk文件安装到手机上. 在Mac 上要实现这样还是挺难得,目前还没有像Windows那样的第三方软件可以 ...

  3. FCL源码中数组类型的学习及排序函数Sort函数的分析

    Array 是所有数组的基类ArrayList 解决了所有Array 类的缺点    能动态扩容, 但是类型不安全的,而是会有装箱与拆箱的性能开销List<T> 则是解决了ArrayLis ...

  4. Spring Boot 多模块与 Maven 私有仓库

    前言 系统复杂了,抽离单一职责的模块几乎是必须的:若需维护多个项目,抽离公用包上传私有仓库管理也几乎是必须的.其优点无需赘述,以下将记录操作过程. 1. 多模块拆分 在.NET 中由于其统一性,实现上 ...

  5. 超精简易用cocoaPods的安装和使用

    cocoaPods 安装和使用 第一步:替换ruby源 $ gem sources -l                                查看当前ruby的源 $ gem sources ...

  6. Spring Boot 2.0.1 入门教程

    简介 Spring Boot是Spring提供的一套基础配置环境,可以用来快速开发生产环境级别的产品.尤其适合开发微服务架构,省去了不少配置麻烦.比如用到Spring MVC时,只需把spring-b ...

  7. Javascript的console['']几种常用输入方法

    1.console.log是最常用的输入方法,正常化输出语句,还具有print占位符整数(%d||%i),浮点数(%f),对象(%o),字符(%s); 2.console.error输出错误化的语句 ...

  8. JSON 的含义?

    JSON 的全称是 JavaScript Object Notation,是一种轻量级的数据交换格式.JS ON 与 XML 具有相同的特性,例如易于人编写和阅读,易于机器生成和解析.但是 JSON ...

  9. Struts优缺点

    跟Tomcat.Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点.使开发者能更深入的了解其内部实现机制. Struts开放源码框架的创建是为了使开发者在构建基于Java Serv ...

  10. Linux下高并发socket最大连接数

    http://soft.chinabyte.com/os/285/12349285.shtml (转载时原文内容做个修改) 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是 ...