工具: 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】操作数据库的更多相关文章

  1. java操作数据库:增删改查

    不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...

  2. JDBC 数据库连接 Java操作数据库 jdbc快速入门

    JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口  更新内容之前 代码 pa ...

  3. JDBC数据源(DataSource)数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。

    JDBC数据源(DataSource)的简单实现   数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用. 2.数据源提供了一种简单获取数据库连接的方式,并能在内部通 ...

  4. Java操作数据库——手动实现数据库连接池

    Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...

  5. Java操作数据库——使用连接池连接数据库

    Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...

  6. Java操作数据库——在JDBC里使用事务

    Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下 ...

  7. Java操作数据库——使用JDBC连接数据库

    Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...

  8. JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了

    JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...

  9. java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法

    在进行jdbc直接操作数据库时    : 我们需要对该工程进行一次导包(引入"msbase.jar" "mssqlserver.jar" "msuti ...

  10. java操作数据库:分页查询

    直接上.... 还是用之前的goods表,增加了一些数据 1.实体类Goods // 封装数据 public class Goods { private int gid; private String ...

随机推荐

  1. 关于vue加element-ui上传文件获取文件的sha256的值 第二篇 更改压缩包编码错误

    这个依然需要插件crypto-js 首先下载引入 import CryptoJs from "crypto-js"; 话不多说直接上代码,首先是element的上传 <el- ...

  2. WxPython跨平台开发框架之使用PyInstaller 进行打包处理

    使用PyInstaller 打包Python项目是一个常见的需求,它可以将Python程序及其所有依赖项打包成一个独立的可执行文件或者安装文件,方便在没有安装Python环境的机器上运行.本随笔介绍W ...

  3. BOF编写-修改时间戳

    模板配置 跟着网上的教程使用evilashz师傅的模板,下载模板解压至vs的模板目录: %UserProfile%\Documents\Visual Studio 2022\Templates\Pro ...

  4. 微服务实战系列(十一)-微服务之自定义脚手架-copy

    微服务实战系列(十一)-微服务之自定义脚手架   1. 场景描述 (1)随着微服务越来越常见,一个大的项目会被拆分成多个小的微服务,jar包以及jar之间的版本冲突问题,变得越来越常见,如何保持整体微 ...

  5. 深入LinkedBlockingQueue实现原理

    学习BlockingQueue之LinkedBlockingQueue实现原理   一:概念 LinkedBlockingQueue是一个用链表实现的有界阻塞队列.此队列的默认和最大长度为 Integ ...

  6. 一文读懂 es6 中class方法中的this绑定

    一直以来有这么个疑问? class 的方法中没有自动的绑定this 为什么手动绑定之后,在绑定之后的方法里调用class中的其他的方法(这个方法为什么就能使用this,不也应该是null或者undef ...

  7. VOLE+OKVS的PSI技术落地应用

    学习&转载文章:技术创新〡VOLE+OKVS的PSI技术落地应用 神谱科技基于VOLE+OKVS设计了两方PSI和多方PSI协议,并已应用于Seceum系列隐私计算产品中. Seceum并无开 ...

  8. ctfshow--web4 include日志注入

    这题和第三题有点不一样,这题的把php 和 data 都过滤掉了 一旦我们输入这个关键字就页面就会报error 一开始是没啥头绪的,后面上网查了一下,可以通过日志记录来注入代码 对于Apache,日志 ...

  9. Huggingface使用

    目录 1. Transformer模型 1.1 核心组件 1.2 模型结构 1.3 Transformer 使用 1.3.1 使用 Hugging Face Transformers 库 1.3.2 ...

  10. tomcat配置用户名密码

    1.配置tomcat-user.xml<role rolename="manager-gui"/><role rolename="manager-scr ...