【Java】操作数据库
工具: eclipse
MySQL
Navicat for MySQL
MySQL 连接驱动:mysql-connector-java-5.0.4-bin.jar
SQL 代码
CREATE TABLE user
(
id VARCHAR(255),
name VARCHAR(255),
birth VARCHAR(255),
gender VARCHAR(255),
favorite VARCHAR(255)
);
Java 代码
package model.vo;
public class Student {
private String id;
private String name;
private String birth;
private String gender;
private String favorite;
public Student(String id, String name, String birth, String gender,
String favorite) {
super();
this.id = id;
this.name = name;
this.birth = birth;
this.gender = gender;
this.favorite = favorite;
}
public Student() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getFavorite() {
return favorite;
}
public void setFavorite(String favorite) {
this.favorite = favorite;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
Java 连接
所需的jar包下载
百度网盘 提取码: 68pv
使用方法:
1. 在工程目录中创建lib文件夹,将下载好的JDBC(jar包)放到该文件夹下。
2. 右键工程名,选择 Buiding Path | Configure Buiding Path ,在java build path中的Libraries分页中选择Add JARs...,选择刚才添加的JDBC(jar包)。
数据库连接
package tools;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DbTools {
public Connection con;
public Connection getCon() throws Exception {
// 1.加载驱动(按照驱动类的名字《完整名字:包名.类名》把该类加载到内存中)
Class.forName("com.mysql.jdbc.Driver");
// 2.建立连接
String url = "jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=utf-8";
String dbUser = "root";
String dbPassword = "mysqladmin";
con = DriverManager.getConnection(url, dbUser, dbPassword);
System.out.println("success");
return con;
}
public void close() throws Exception{
if(con!=null)
con.close();
}
}
增
public void add(String id, String name, String gender, String birth, String favorite) throws Exception
{
DbTools db = new DbTools();
Connection con = db.getCon();
// 创建语句
String sql = "insert into tstudent (id,name,gender,birth,favorite) values (?,?,?,?,?) ";
PreparedStatement pst = con.prepareStatement(sql);
pst.setString(1, id);
pst.setString(2, name);
pst.setString(3, gender);
pst.setString(4, birth);
pst.setString(5, favorite);
pst.executeUpdate();
}
删
public void delete(String id) throws Exception{
DbTools db=new DbTools();
Connection con=db.getCon();
// 3.创建语句
String sql = " delete from tstudent where id=? ";
PreparedStatement pst = con.prepareStatement(sql);
pst.setString(1, id);
pst.executeUpdate();
pst.close();
db.close();
}
改
public void updateStudent(String id, String name, String gender, String birth, String favorite) throws Exception
{
DbTools db = new DbTools();
Connection con = db.getCon();
// 创建语句
String sql = "update tstudent set ";
if(name!=null && name.length()>0)
sql=sql+" and name = ?";
if(gender!=null && gender.length()>0)
sql=sql+" and gender=?";
if(birth!=null && birth.length()>0)
sql+= " and birth=?";
if(birth!=null && favorite.length()>0)
sql+= " and favorite=?";
sql+=" where id='?' ";
System.out.println(sql);
PreparedStatement pst = con.prepareStatement(sql);
// 4.执行语句(语句中如果有参数,则需要先对参数赋值)
ArrayList<String> params=new ArrayList<String>();
if(id!=null && id.length()>0)
params.add(id);
if(name!=null && name.length()>0)
params.add(name);
if(gender!=null && gender.length()>0)
params.add(gender);
for(int i=0;i<params.size();i++){
pst.setString(i+1, params.get(i));
}
pst.executeUpdate();
pst.close();
db.close();
}
查
// 按条件查询满足条件的学生数据
/*
* 参数:查询条件 返回:查询结果(若干个,使用集合类型<>)
*/
public ArrayList<Student> query(String id, String name, String gender) throws Exception {
ArrayList<Student> result = new ArrayList<Student>();
DbTools db=new DbTools();
Connection con=db.getCon();
// 3.创建语句
String sql = " select * from tstudent where 1=1 ";
if(id!=null && id.length()>0)
sql=sql+" and id=? ";
if(name!=null && name.length()>0)
sql=sql+" and name = ?";
if(gender!=null && gender.length()>0)
sql=sql+" and gender=?";
System.out.println(sql);
PreparedStatement pst = con.prepareStatement(sql);
// 4.执行语句(语句中如果有参数,则需要先对参数赋值)
ArrayList<String> params=new ArrayList<String>();
if(id!=null && id.length()>0)
params.add(id);
if(name!=null && name.length()>0)
params.add(name);
if(gender!=null && gender.length()>0)
params.add(gender);
for(int i=0;i<params.size();i++){
pst.setString(i+1, params.get(i));
}
ResultSet rs = pst.executeQuery(); //执行查询
while(rs.next()){
Student student=new Student();
student.setId(rs.getString("id"));
student.setName(rs.getString("name"));
student.setGender(rs.getString("gender"));
student.setBirth(rs.getString("birth"));
student.setFavorite(rs.getString("favorite"));
result.add(student);
}
rs.close();
pst.close();
db.close();
return result;
}
提示
可保存这此Java项目,下次连接可直接导入,只需修改部分信息。
【Java】操作数据库的更多相关文章
- java操作数据库:增删改查
不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...
- JDBC 数据库连接 Java操作数据库 jdbc快速入门
JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口 更新内容之前 代码 pa ...
- JDBC数据源(DataSource)数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。
JDBC数据源(DataSource)的简单实现 数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用. 2.数据源提供了一种简单获取数据库连接的方式,并能在内部通 ...
- Java操作数据库——手动实现数据库连接池
Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...
- Java操作数据库——使用连接池连接数据库
Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...
- Java操作数据库——在JDBC里使用事务
Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下 ...
- Java操作数据库——使用JDBC连接数据库
Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...
- JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了
JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...
- java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
在进行jdbc直接操作数据库时 : 我们需要对该工程进行一次导包(引入"msbase.jar" "mssqlserver.jar" "msuti ...
- java操作数据库:分页查询
直接上.... 还是用之前的goods表,增加了一些数据 1.实体类Goods // 封装数据 public class Goods { private int gid; private String ...
随机推荐
- C#+ WPF 实现蓝牙转WIFI计步上位机
前言 一个WIFI上位机,接收底层MPU6050数据,途中转蓝牙从机透传,到蓝牙主机直连WIFI,PC端UDP通信,实现三轴加速度数据传送和计步功能. 项目介绍 本项目基于.NET平台,使用WPF开发 ...
- Mybatis-Plus 多租户模式忽略某个方法
Mapper 类方法添加注解: @InterceptorIgnore(tenantLine = "true") 亲测有效.
- No match for argument: kde-l10n-Chinese 报错
背景:安装 kde-l10n-Chinese 软件包报错 原因:该安装包适用于 centos7 系统,若为 centos8 则无法安装 解决办法:更换适配 centos 8 中文安装包 yum ins ...
- Solution Set -「LOCAL」冲刺省选 Round I
\(\mathscr{Summary}\) 状态还行叭. A 题又犯坏习惯,走起来就大力分讨,上了个厕所之后冷静一下开始寻找比较普适性的 DP 状态,然后几乎就切掉了,可惜复杂度写假了没发现( ...
- MongoDB:集群和安全
MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务. 副本集可提供冗余和高可用性,是所有生产部署的基础.也可以说,副本集类似于有自动故障恢复功能的主从集群.通俗的 ...
- 使用xtrabackup对MySQL8.0.34进行备份和恢复
Percona XtraBackup 是一款开源的.用于 MySQL 和 MariaDB 的热备份工具,它可以在不停止数据库服务的情况下进行全量或增量备份,并且能够快速恢复数据.以下从特点.安装.备份 ...
- Kali 切换中文模式
Kali 切换中文模式 在桌面打开终端,输入sudo dpkg-reconfigure locales命令,然后输入kali的密码 在选择栏目找到 zh_CN.UTF-8 UTF-8 找到之后按 空格 ...
- 使用guava的cache实现缓存
一.maven <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- Luogu P2292 HNOI2004 L 语言 题解 [ 紫 ] [ AC 自动机 ] [ 状压 dp ]
L 语言:很好的一道状压 dp 题. 思路 看到这题,首先可以想到一个很暴力的 dp,设 \(dp_i\) 表示考虑到第 \(i\) 位能否被理解,暴力匹配字符串转移即可. 第一个优化也很显然,暴力匹 ...
- 库卡机器人KR3R540电源模块常见故障维修解决方法
库卡机器人KR3R540电源模块的常见故障及维修解决方法包括: 电源模块无法正常启动:应检查电源模块的电源连接是否正常,以及电源开关是否开启.如果电源连接正常,但驱 ...