• JDBC连接MySQL数据库基础


    主要内容

    • MySQL的基本操作和基本SQL语法
    • 使用JDBC进行MySQL数据库的开发
    • 使用DriverManager、Connection、PreparedStatement、ResultSet对数据库进行增删改查操作

    JDBC简介

      JDBC(Java Database Connectivity)提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系型数据库的统一操作,它由一组用Java语言编写的接口和类组成。

      JDBC本身提供的是一套数据库操作标准,而这些标准又需要数据库厂商实现,所以针对每一个数据库厂商都会提供一个JDBC驱动程序,目前比较常见的JDBC驱动程序可分为以下4类:

    1. JDBC-ODBC桥驱动。直接利用微软的ODBC(Open Database Connectivity)进行数据库的连接操作,但是这种操作性能较低。
    2. JDBC本地驱动。直接使用各个数据库生产商提供的JDBC驱动程序,但是因为其只能应用在特定的数据库上,会丧失程序的可移植性,不过这样操作的性能较高。
    3. JDBC网络驱动。将JDBC转换为与DBMS无关的网络协议,之后又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上,所用的具体协议取决于提供者。通常,这是最灵活的JDBC驱动程序。
    4. 本地协议纯JDBC驱动。将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机器上直接调用DBMS服务器。

    MySQL数据库

      MySQL是一个小型关系型数据库管理系统。在MySQL官网下载安装包,安装好之后配置好环境变量就可以使用了。

    MySQL常用命令
    连接MySQL数据库 mysql -u 用户名 -p;然后输入密码
    创建数据库 create database 数据库名称;
    删除数据库 drop database 数据库名称;
    使用数据库 use 数据库名称;
    创建数据库表 create table 表名称(字段名称 字段类型 默认值 约束…………);
    删除数据库表 drop table 表名称;
    查看表结构 desc 表名称;
    查看全部数据库 show databases;
    查看一个数据库的全部表 show tables;

    SQL语法基础

      SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常用于与数据库的通信。SQL功能强大,概括起来可以分成以下几组:DML(Data Manipulation Language,数据操作语言),用于检索或者修改数据;DDL(Data Definition Language,数据定义语言),用于定义数据的结构,如创建、修改或者删除数据库对象;DCL(Data Control Language,数据控制语言),用于定义数据库用户的权限。

    SQL常用语法
    增加数据 insert into 表名称【(字段1,字段2,……,字段n)】 values(值1,值2,……,值n);(【】表示可选项)
    删除数据 delete from 表名称 【删除条件】;
    更新数据 update 表名称 set 字段1=值1,……,字段n=值n 【where 更新条件】;
    查询数据

    select {*|column alias}

    from 表名称 别名

    【where 条件】

    【limit 开始行,取出的数据个数】;

      需要注意的是,在增加数据时,如果是字符串,则一定要用“‘”括起来;如果是日期,则按照标准的日期格式进行插入(MySQL中的日期使用yyyy-mm-dd的格式保存,所以在插入数据时,必须按照此种格式插入)。

      在删除数据时,最好指定删除的条件,如果没有指定,则表示删除一张表中的全部数据。

      与删除语句一样,修改时也需要指定修改条件,否则数据表的全部记录都将被修改。


    连接数据库

      要使用MySQL数据库进行开发,首先去官网下载驱动,然后将MySQL数据库的驱动程序配置到classpath中。

      加载数据库驱动程序是JDBC操作的第一步,由于已经将数据库的驱动程序直接配置到了classpath中,所以,此时可以直接进行加载。MySQL中的数据库驱动路径是com.mysql.jdbc.Driver。得到驱动程序路径之后,即可利用Class类进行驱动程序的加载。

      连接及关闭数据库。如果数据库驱动程序可以正常加载,就可以利用DriverManager类连接数据库。在DriverManager中,提供的主要操作就是得到一个数据库的连接,getConnection()方法就是取得连接对象,此方法返回的是Connection对象,不管使用哪种方式连接,都必须提供一个数据库的连接地址。

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.SQLException;
     4 
     5 public class ExampleDatabase {
     6     //定义MySQL的数据库驱动程序
     7     public static final String DBDRIVER = "com.mysql.jdbc.Driver";
     8     //定义MySQL数据库的连接地址
     9     public static final String DBURL = "jdbc:mysql://localhost:3306/test";
    10     //MySQL数据库的连接用户名
    11     public static final String DBUSER = "root";
    12     //MySQL数据库的连接密码
    13     public static final String DBPASS = "root";
    14     public static void main(String[] args) {
    15         Connection con = null;
    16         try {
    17             //加载驱动程序
    18             Class.forName(DBDRIVER);
    19         }
    20         catch (ClassNotFoundException e) {
    21             e.printStackTrace();
    22         }
    23         try {
    24             //连接MySQL数据库时,要写上连接的用户名和密码
    25             con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
    26         }
    27         catch (SQLException e) {
    28             e.printStackTrace();
    29         }
    30         System.out.println(con);
    31         try {
    32             //关闭数据库
    33             con.close();
    34         }
    35         catch (SQLException e) {
    36             e.printStackTrace();
    37         }
    38     }
    39 }

    执行数据库的更新操作

      数据库连接后,就可以进行数据库的具体操作,要使用Statement接口完成,此接口可以使用Connection接口中提供的createStatement()方法实例化。

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.SQLException;
     4 import java.sql.Statement;
     5 
     6 public class ExampleDatabase {
     7     //定义MySQL的数据库驱动程序
     8     public static final String DBDRIVER = "com.mysql.jdbc.Driver";
     9     //定义MySQL数据库的连接地址
    10     public static final String DBURL = "jdbc:mysql://localhost:3306/test";
    11     //MySQL数据库的连接用户名
    12     public static final String DBUSER = "root";
    13     //MySQL数据库的连接密码
    14     public static final String DBPASS = "root";
    15     public static void main(String[] args) {
    16         Connection con = null;
    17         Statement stmt = null;
    18         //数据库插入语句
    19         String insertSQL = "insert into user (id, name, age) values (3, 'key', 23)";
    20         //数据库修改语句
    21         String alterSQL = "update user SET name='jon' where id=8";
    22         //数据库删除语句
    23         String deleteSQL = "delete from user where id=5";
    24         try {
    25             //加载驱动程序
    26             Class.forName(DBDRIVER);
    27         }
    28         catch (ClassNotFoundException e) {
    29             e.printStackTrace();
    30         }
    31         try {
    32             //连接MySQL数据库时,要写上连接的用户名和密码
    33             con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
    34             //实例化Statement对象
    35             stmt = con.createStatement();
    36             //执行数据库更新操作
    37             stmt.executeUpdate(insertSQL);
    38             stmt.executeUpdate(alterSQL);
    39             stmt.executeUpdate(deleteSQL);
    40         }
    41         catch (SQLException e) {
    42             e.printStackTrace();
    43         }
    44         System.out.println(con);
    45         try {
    46             //关闭操作
    47             stmt.close();
    48             //关闭数据库
    49             con.close();
    50         }
    51         catch (SQLException e) {
    52             e.printStackTrace();
    53         }
    54     }
    55 }

    数据库查询操作

      使用SQL的select语句可以查询出数据库的全部结果,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容。要进行数据库查询操作,需要使用Statement接口定义的executeQuery()方法,此方法返回值类型就是一个ResultSet的对象,此对象中存放了所有的查询结果。

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.SQLException;
     4 import java.sql.Statement;
     5 import java.sql.ResultSet;
     6 
     7 public class ExampleDatabase {
     8     //定义MySQL的数据库驱动程序
     9     public static final String DBDRIVER = "com.mysql.jdbc.Driver";
    10     //定义MySQL数据库的连接地址
    11     public static final String DBURL = "jdbc:mysql://localhost:3306/test";
    12     //MySQL数据库的连接用户名
    13     public static final String DBUSER = "root";
    14     //MySQL数据库的连接密码
    15     public static final String DBPASS = "root";
    16     public static void main(String[] args) {
    17         Connection con = null;
    18         Statement stmt = null;
    19         ResultSet rs = null;
    20         //数据库查询语句
    21         String sql = "select id , name, age from user";
    22         try {
    23             //加载驱动程序
    24             Class.forName(DBDRIVER);
    25         }
    26         catch (ClassNotFoundException e) {
    27             e.printStackTrace();
    28         }
    29         try {
    30             //连接MySQL数据库时,要写上连接的用户名和密码
    31             con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
    32             //实例化Statement对象
    33             stmt = con.createStatement();
    34             //执行数据库查询操作
    35             rs = stmt.executeQuery(sql);
    36             while (rs.next()) {
    37                 int id = rs.getInt("id");
    38                 String name = rs.getString(2);
    39                 int age = rs.getInt("age");
    40                 System.out.print("id:" + id + " ");
    41                 System.out.print("name:" + name + " ");
    42                 System.out.println("age:" + age);
    43             }
    44         }
    45         catch (SQLException e) {
    46             e.printStackTrace();
    47         }
    48         System.out.println(con);
    49         try {
    50             //关闭结果集
    51             rs.close();
    52             //关闭操作
    53             stmt.close();
    54             //关闭数据库
    55             con.close();
    56         }
    57         catch (SQLException e) {
    58             e.printStackTrace();
    59         }
    60     }
    61 }

      ResultSet中的所有数据都可以通过getString()方法获得。

    PreparedStatement

      PreparedStatement是Statement的子接口,属于预处理操作。与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置。由于PreparedStatement对象已预编译过,所以其执行速度要高于Statement对象。在开发中不建议使用Statement,而是使用PreparedStatement。

  • 相关阅读:
    初始线程(相关理论)
    python并发编程之多进程2-(数据共享及进程池和回调函数)
    python并发编程之多进程1--(互斥锁与进程间的通信)
    Cpython支持的进程与线程
    网络编程之进程理论简介
    python之网络socket编程
    Gray码 (格雷码) 【二进制】
    [BZOJ 2350] [Poi2011] Party 【Special】
    [BZOJ 1033] [ZJOI2008] 杀蚂蚁antbuster 【模拟!】
    [BZOJ 3209] 花神的数论题 【数位统计】
  • 原文地址:https://www.cnblogs.com/lucky-zhangcd/p/8401845.html
Copyright © 2020-2023  润新知