JDBC操作数据库实例
jdbc操作数据库实例
1.jdbc创建数据库
1.1 前提条件
1.拥有创建和删除表的权限
2.数据库已经启动,且可用
1.2 jdbc创建数据库表的步骤:
导包:导入需要进行数据库编程的 JDBC 类的包。大多数情况下,使用 import java.sql. 就足够了。
- 注册 JDBC 驱动程序:初始化驱动程序,使之可以与数据库打开通信通道。
- 获取连接:需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库服务器的物理连接。
- 建数据库:使用类型声明的对象建立并提交一个 建数据库SQL 语句到数据库。
- 释放资源:手动释放资源,依靠 JVM 垃圾收集器可以明确地回收所有的数据库资源。
创建数据库实例:创建jdbc数据库:
java源码:
package com.hejh.day0509; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCCreateDatabase {
@Test
public void createDatabase() {
Connection conn = null;
Statement st = null;
ResultSet rs = null; try {
//使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
conn = JDBCUtil.getConnection();
st = conn.createStatement();
String sql = "create database jdbc character set utf8";
int i = st.executeUpdate(sql);
System.out.println("建立数据库成功,影响了:"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, st, rs);
}
}
}
JDBCUtil工具类源码:
package com.hejh.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
//在这里要注意,不是具体连接到某个具体的数据库下,是在当前用户下创建JDBC数据库
final static String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源closeResourse(conn,st,rs)*/
public static void closeResourse(Connection conn,Statement st,ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源closeResourse(conn,ps,rs)*/
public static void closeResourse(Connection conn,PreparedStatement ps,ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
数据库显示为:

2.jdbc切换数据库
java源码:
package com.hejh.day0509; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCChangeDatabase {
@Test
public void createDatabase() {
Connection conn = null;
Statement st = null;
ResultSet rs = null; try {
//使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
conn = JDBCUtil.getConnection();
st = conn.createStatement();
//切换(选择)数据库;或者在url中把数据库写死
String sql = "use jdbc";
int i = st.executeUpdate(sql);
System.out.println("切换数据库成功,影响了:"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, st, rs);
}
}
}
工具类JDBCUtil.java,略
3.jdbc删除数据库
在Connection对象的参数url的数据库名,必须和你要删除的数据库名一致,这样才能删除,即:
url = "jdbc:mysql://localhost/jdbc?useUnicode=true&characterEncoding=UTF-8";
//删除数据库;
String sql = "drop database jdbc";
java源码:
package com.hejh.day0509; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCDeleteDatabase {
@Test
public void createDatabase() {
Connection conn = null;
Statement st = null;
ResultSet rs = null; try {
//使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
conn = JDBCUtil.getConnection();
st = conn.createStatement();
//删除数据库;
String sql = "drop database jdbc";
int i = st.executeUpdate(sql);
System.out.println("删除数据库成功,影响了:"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, st, rs);
}
}
}
工具类JDBCUtil.java,略
4.jdbc创建表
4.1前提条件
- 在运行下面的例子之前,你需要用你实际的用户名和密码去代替 username 和 password 。
- 你的 MySQL 或者其他数据库已经启动了并在运行中。
4.2 JDBC建表步骤
导包:导入含有需要进行数据库编程的 JDBC 类的包。大多数情况下,使用 import java.sql. 就足够了。
- 注册 JDBC 驱动程序:初始化驱动程序,使之可以与数据库打开通信通道。
- 打开连接:需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库服务器的物理连接。
- 建表:需要使用类型声明的对象建立并提交一个 建表SQL 语句到被选择的数据库中去创建表。
- 释放资源:依靠 JVM 垃圾收集器可以明确地回收所有的数据库资源。
建表实例如下:建立一张student表
java源码:
package com.hejh.day0509; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCCreateDatabase {
@Test
public void create() {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
conn = JDBCUtil.getConnection();
//建表sql语句
String sql = "create table student(id int(10) primary key,name varchar(20),grate int(10) not null)";
//获取Statement对象,并执行sql语句
st = conn.createStatement();
int i = st.executeUpdate(sql);
//处理执行sql返回的结果
System.out.println("影响了:"+i+"行数据");
} catch (SQLException e) {
e.printStackTrace();
}finally {
//关闭资源
JDBCUtil.closeResourse(conn, st, rs);
}
}
}
抽取的java工具类JDBCUtil.java:
package com.hejh.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
final static String url = "jdbc:mysql://localhost/jdbc?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源1:closeResourse(conn,st,rs)*/
public static void closeResourse(Connection conn,Statement st,ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源2:closeResourse(conn,ps,rs)*/
public static void closeResourse(Connection conn,PreparedStatement ps,ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
数据库显示为:

5.JDBC删除表
java源码,工具类源码 略:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test
import com.hejh.util.JDBCUtil; public class JDBCDeleteTable {
@Test
public void deleteTable() {
Connection conn = null;
Statement st = null;
try {
conn = JDBCUtil.getConnection();
st = conn.createStatement();
String sql = "drop table student";
int i = st.executeUpdate(sql);
System.out.println("删除表成功,影响了"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, st);
}
}
}
数据库显示为:

6.JDBC插入数据
java源码:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil; //jdbc插入数据
public class JDBCInsertData {
@Test
public void insertData() {
Connection conn = null;
PreparedStatement pst = null; try {
conn = JDBCUtil.getConnection();
String sql = "insert into student values(?,?,?)";
pst = conn.prepareStatement(sql);
pst.setInt(1, 01);
pst.setString(2, "hjh");
pst.setInt(3, 100);
int i = pst.executeUpdate();
System.out.println("插入数据成功,影响了"+i+"行数据");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, pst);
}
}
}
JDBCUtil工具类源码:
package com.hejh.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
final static String url = "jdbc:mysql://localhost/jdbc?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源closeResourse(conn,st)*/
public static void closeResourse(Connection conn,Statement st) {
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源closeResourse(conn,ps)*/
public static void closeResourse(Connection conn,PreparedStatement ps) {
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**关闭资源closeResourse(rs)*/
public static void closeResourse(ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
数据库显示为:

7.JDBC查询数据
数据库数据:

java源码,工具类略:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCSelectData {
@Test
public void selectDate() {
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
String sql = "select * from student";
pst = conn.prepareStatement(sql);
System.out.println("启动查询。。。");
rs = pst.executeQuery();
while(rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
String grate = rs.getString(3);
System.out.println(id +" "+name+" "+ grate);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
eclipse console输出为:
启动查询。。。
1 hjh 100
2 swy 101
8.JDBC更新数据
数据库数据为:

更新id为1的student的name为hejh,java代码实现为:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCUpdateData {
@Test
public void updateData() {
Connection conn = null;
Statement st = null;
try {
conn = JDBCUtil.getConnection();
st = conn.createStatement();
String sql = "update student set name='hejh' where id=1 ";
int i = st.executeUpdate(sql);
System.out.println("更新数据成功,影响了"+i+"行数据");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, st);
}
}
}
数据库更新后数据为:

9.JDBC删除记录
数据库有以下2条数据:

删除ID为1的那条数据,java代码实现为:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil; public class JDBCDeleteData {
@Test
public void deleteData() {
Connection conn = null;
Statement st = null;
try {
conn = JDBCUtil.getConnection();
st = conn.createStatement();
String sql = "delete from student where id=1 ";
int i = st.executeUpdate(sql);
System.out.println("删除数据成功,影响了"+i+"行数据");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(conn, st);
}
}
}
数据库表更新数据库,剩余一条记录:

10.JDBC查询like字句
数据库数据如下:

JDBC like字句查询,查询名字中带'h'的学生, ,java代码实现如下:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil; //like字句
public class JDBCSelectDataLike {
@Test
public void like() {
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
String sql = "select * from student where name like '%h%' ";
pst = conn.prepareStatement(sql);
System.out.println("启动like字句查询。。。");
rs = pst.executeQuery();
while(rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
String grate = rs.getString(3);
System.out.println(id +" "+name+" "+ grate);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(rs);
JDBCUtil.closeResourse(conn, pst);
}
}
}
eclipse中console输出为:
启动like字句查询。。。
1 hejh 100
3 heihei 99
11.JDBC实现查询排序
数据库数据如下:

按照grate由低到高排序,java代码实现如下:
package com.hejh.day0510; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil; //jdbc实现排序
public class JDBCSortData {
@Test
public void sortData() {
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
String sql = "select * from student order by grate asc ";
pst = conn.prepareStatement(sql);
System.out.println("启动排序查询。。。");
rs = pst.executeQuery();
while(rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
String grate = rs.getString(3);
System.out.println(id +" "+name+" "+ grate);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeResourse(rs);
JDBCUtil.closeResourse(conn, pst);
}
}
}
eclipsepse中console输出为:
启动排序查询。。。
4 sansa 88
3 heihei 99
1 hejh 100
2 swy 101
JDBC操作数据库实例的更多相关文章
- JDBC 操作数据库实例
JDBC是什么 JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是 ...
- JDBC操作数据库的三种方式比较
JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
- JDBC操作数据库的基本操作
JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- JDBC操作数据库的基本步骤:
JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...
随机推荐
- redhat linux卸载自带的Java1.4.2安装JDK6
一.卸载jdk1.4 由于Redhat Enterprise Linux 5.6 中自带安装了jdk1.4.2的,所以在安装jdk1.6前我把jdk1.4.2的卸了,步骤如下: 1.打开终端输入 yu ...
- memcpy 和 memmove
memcpy 原形为: void *memcpy(void *dest, const void *src, size_t n); 其用于内存空间的拷贝,但是并没有考虑内存重叠问题. memmove原形 ...
- vim中利用swp文件进行恢复
经常电脑因为没电或者强行关闭vim,会导致原文件没有保存, 这种情况下vim会自动保存一个.swp文件,需要恢复时, 使用vim -r filename 期中-r意思为recovery 恢复之后最好删 ...
- Django-rest Framework(五)
把十大接口做完了才能更好的了解后面的视图类 1.(重点)二次封装Response;自定义APIResponse继承Response,重写 ____init____方法 from rest_framew ...
- JasperReport填充报表6
任何报告工具的主要目的是为了生产出高品质的文档.举报填充过程有助于报告工具通过操纵数据集来实现这一目标.需要报表填充过程的主要输入是: 报表模板:这是实际的JasperReport文件 报告参数:这些 ...
- Mysql中ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8怎么转换为sql sever2008的代码
ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8转换sql server AUTO_INCREMENT=2 ,是 自动递增列的 初始数值 = 2, ...
- Java数据结构和算法(七)--AVL树
在上篇博客中,学习了二分搜索树:Java数据结构和算法(六)--二叉树,但是二分搜索树本身存在一个问题: 如果现在插入的数据为1,2,3,4,5,6,这样有序的数据,或者是逆序 这种情况下的二分搜索树 ...
- Django项目:CRM(客户关系管理系统)--43--35PerfectCRM实现CRM重写Admin密码修改
#admin.py # ————————01PerfectCRM基本配置ADMIN———————— from django.contrib import admin # Register your m ...
- 关系型数据库和nosql非关系型数据库
快下班了.突然和同事聊起了node+mongdb,因为我们这里的项目没有mongdb,就问后端的同事,我们'爱装逼'的后端的同事让我们先自己学习一下什么关系型数据库和非关系型数据库.一顿百度查询了解下 ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转]
适配器模式的主要意图是对现有类的接口进行转换,以满足目标类的需求.其次,可以给目标类的接口添加新的行为(主要指方法).这一点容易与装饰模式混淆.从意图方面来看,装饰模式不改变(通常指增加)接口中的行为 ...