JDBC链接MySQL数据库基础

主要内容java

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

 


JDBC简介mysql

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

  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,数据控制语言),用于定义数据库用户的权限。spa

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

select {*|column alias}code

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。

相关文章
相关标签/搜索