JDBC连接MySQL数据库基础
主要内容
- MySQL的基本操作和基本SQL语法
- 使用JDBC进行MySQL数据库的开发
- 使用DriverManager、Connection、PreparedStatement、ResultSet对数据库进行增删改查操作
JDBC简介
JDBC(Java Database Connectivity)提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系型数据库的统一操作,它由一组用Java语言编写的接口和类组成。
JDBC本身提供的是一套数据库操作标准,而这些标准又需要数据库厂商实现,所以针对每一个数据库厂商都会提供一个JDBC驱动程序,目前比较常见的JDBC驱动程序可分为以下4类:
- JDBC-ODBC桥驱动。直接利用微软的ODBC(Open Database Connectivity)进行数据库的连接操作,但是这种操作性能较低。
- JDBC本地驱动。直接使用各个数据库生产商提供的JDBC驱动程序,但是因为其只能应用在特定的数据库上,会丧失程序的可移植性,不过这样操作的性能较高。
- JDBC网络驱动。将JDBC转换为与DBMS无关的网络协议,之后又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上,所用的具体协议取决于提供者。通常,这是最灵活的JDBC驱动程序。
- 本地协议纯JDBC驱动。将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机器上直接调用DBMS服务器。
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,数据控制语言),用于定义数据库用户的权限。
| 增加数据 | 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对象,不管使用哪种方式连接,都必须提供一个数据库的连接地址。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class ExampleDatabase {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/test";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "root";
public static void main(String[] args) {
Connection con = null;
try {
//加载驱动程序
Class.forName(DBDRIVER);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//连接MySQL数据库时,要写上连接的用户名和密码
con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
}
catch (SQLException e) {
e.printStackTrace();
}
System.out.println(con);
try {
//关闭数据库
con.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
执行数据库的更新操作
数据库连接后,就可以进行数据库的具体操作,要使用Statement接口完成,此接口可以使用Connection接口中提供的createStatement()方法实例化。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class ExampleDatabase {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/test";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "root";
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
//数据库插入语句
String insertSQL = "insert into user (id, name, age) values (3, 'key', 23)";
//数据库修改语句
String alterSQL = "update user SET name='jon' where id=8";
//数据库删除语句
String deleteSQL = "delete from user where id=5";
try {
//加载驱动程序
Class.forName(DBDRIVER);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//连接MySQL数据库时,要写上连接的用户名和密码
con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
//实例化Statement对象
stmt = con.createStatement();
//执行数据库更新操作
stmt.executeUpdate(insertSQL);
stmt.executeUpdate(alterSQL);
stmt.executeUpdate(deleteSQL);
}
catch (SQLException e) {
e.printStackTrace();
}
System.out.println(con);
try {
//关闭操作
stmt.close();
//关闭数据库
con.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
数据库查询操作
使用SQL的select语句可以查询出数据库的全部结果,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容。要进行数据库查询操作,需要使用Statement接口定义的executeQuery()方法,此方法返回值类型就是一个ResultSet的对象,此对象中存放了所有的查询结果。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet; public class ExampleDatabase {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/test";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "root";
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
//数据库查询语句
String sql = "select id , name, age from user";
try {
//加载驱动程序
Class.forName(DBDRIVER);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//连接MySQL数据库时,要写上连接的用户名和密码
con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
//实例化Statement对象
stmt = con.createStatement();
//执行数据库查询操作
rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString(2);
int age = rs.getInt("age");
System.out.print("id:" + id + " ");
System.out.print("name:" + name + " ");
System.out.println("age:" + age);
}
}
catch (SQLException e) {
e.printStackTrace();
}
System.out.println(con);
try {
//关闭结果集
rs.close();
//关闭操作
stmt.close();
//关闭数据库
con.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
ResultSet中的所有数据都可以通过getString()方法获得。
PreparedStatement
PreparedStatement是Statement的子接口,属于预处理操作。与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置。由于PreparedStatement对象已预编译过,所以其执行速度要高于Statement对象。在开发中不建议使用Statement,而是使用PreparedStatement。
JDBC连接MySQL数据库基础的更多相关文章
- ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- JDBC连接MySQL数据库及示例
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一 ...
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...
- java用JDBC连接MySQL数据库的详细知识点
想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...
- JDBC 连接mysql数据库
JDBC 连接mysql数据库jar包:mysql-connector-java-5.1.47.jar 下载:mysql-connector-java-5.1.47.jar jdbc:java dat ...
- 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...
随机推荐
- 初探linux子系统集之led子系统(二)
巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一眼看到7:1还以为点球也能踢成这样,后来想想,点球对多嘛6比1啊,接着就是各种新闻铺天盖地的来了.其实失败并没有什么,人生若是能够成功 ...
- 【14】-java的单例设计模式详解
预加载模式 代码: public class Singleton { private volatile static Singleton singleton = new Singleton(); pr ...
- Java工程师成神之路思维导图
前面看Hollis的微信公众号更新了Java工程师成神之路的文档,感觉里面的内容清晰.齐全,可以用来审视自己,也能够知道自己在那些方面可以继续前行,想着有时间把它画下来,画下来之后分享出来. 主要内容 ...
- 使用微服务架构思想,设计部署OAuth2.0授权认证框架
1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...
- Mongodb3.6 基操命令(二)——如何使用help
前言 在上一篇文章Mongodb3.6 快速入门(一)中,我们主要使用两个命令: 1.mongod #启动服务 2.mongo #连接mongodb 对于刚接触mongo的人来说,该怎么给命令传递参数 ...
- mybatis中分页插件PageHelper的使用
转载博客:http://blog.csdn.net/u012728960/article/details/50791343
- java队列
"队列"这个单词是英国人说的"排".在英国"排队"的意思就是站到一排当中去.计算机科学中,队列是一种数据结构,有点类似栈,只是在队列中第一个 ...
- ffmpeg 的 tbr tbc 和 tbn的意义
tbn = the time base in AVStream that has come from the container tbc = the time base in AVCodecConte ...
- HDU-5705
Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Problem De ...
- 服务器禁止ping
禁止ping后,不让别人通过域名ping到你的ip, 如果禁用后,你在ping自己的域名会给你返回服务商的IP并提示超时, 这样你就可以减少IP暴露,增加一点安全. 禁止方法: 编辑 /etc/sys ...