【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 Primer Plus 第6版 第三章 编程练习参考答案
编译环境VS Code+WSL GCC 源码在文末下载 /*第1题*************************/ #include<stdio.h> int main() { int ...
- 记录uniapp上传图片转base64
// 图片转base64 imageToBase64() { return new Promise((reslove, reject) => { uni.getFileSystemManager ...
- Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能
我们都知道在JavaScript中,我们可以通过Eval来执行JavaScript字符串代码. 下面推荐一个.Net版本的Eval的开源项目. 01 项目简介 Eval-Expression.NET是 ...
- 【C语言学习】——命令行编译运行 C 语言程序的完整流程
今天要学习的内容是 命令行编译运行 C 语言程序,进一步理解C语言编译运行的底层实现和编译原理相关知识,下面是命令行编译运行 C 语言程序的完整流程 一.理论讲解 1. 编译原理概述 1.1 编译过程 ...
- 彻底讲透Spring三级缓存,原理源码深度剖析!
一.前言循环依赖:就是N个类循环(嵌套)引用.通俗的讲就是N个Bean互相引用对方,最终形成闭环.在日常的开发中,我们都会碰到类似如下的代码 @Servicepublic class AService ...
- 阿里云-对象存储OSS
https://help.aliyun.com/product/31815.html 阿里云对象存储OSS(Object Storage Service)是一款海量.安全.低成本.高可靠的云存储服务, ...
- HTTP方法-GET对比POST
什么是 HTTP ? 超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信. HTTP 的工作方式是客户端与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用 ...
- MySQL系统命令
原文链接:https://blog.liuzijian.com/post/34b3b940-c053-9d75-06e2-07a2e7aeedc3.html 登录命令 mysql -h 主机 -P 端 ...
- CentOS 7 MongoDB 重装启动失败
诊断过程 1. 错误提示: > journalctl -xe 提示: .... ERROR: child process failed, exited with error number 14 ...
- FastReport实现遍历Dataset数据集计算
delphi在使用fastreport进行打印时,需要对数据进行计算求和. 在打印文本框的OnBeforePrint事件中进行以下代码即可实现效果 procedure Memo7OnBeforePri ...