工具: 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. 前端(二)-CSS

    1.样式 1.1 行内样式 <h1 style="color:red;">行内样式</h1> 1.2 内部样式 CSS代码写在 <head> 的 ...

  2. java基础知识回顾之java Thread类学习(四)--线程的状态以及转化使用的方法介绍

    java基础知识回顾之java Thread类学习(十)--线程的状态以及转化使用的方法介绍      线程的概述:         线程是程序的多个执行路径,执行调度的单位,依托于进程存在.线程不仅 ...

  3. 某次信创环境Oceanbase数据库偶发乱码问题

    资料迁移,整理分享. 问题发生在2023年 一.环境介绍及问题简述 数据库 oceanbase 操作系统 Linux (麒麟) WEB中间件 Tongweb 数据库表编码 GBK 中间件默认使用的HT ...

  4. ef 值转换与值比较器

    前言 简单介绍一下,值转换器和值比较器. 正文 为什么有值转换器这东西呢? 那就是这个东西一直必须存在. 比如说,我们的c# enum 对应数据库的什么呢? 是int还是string呢? 一般情况下, ...

  5. 『Python底层原理』--CPython如何编译代码

    前一篇我们介绍了CPython VM的运行机制,它基于一系列字节码指令来实现程序逻辑. 不过,Python字节码在完整描述代码功能上存在局限性,于是代码对象应运而生.像模块.函数这类代码块的执行,本质 ...

  6. SQL SERVER巡检脚本

    print'----------------------------' print'开始巡检' print'----------------------------' print'1.查看数据库版本信 ...

  7. 从存钱罐到子数组:一个关于累加和的精妙问题|LeetCode 560 和为K的子数组

    LeetCode 560 和为K的子数组 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 你有没有这样的经历:每天往存钱罐里存一些零钱,某一天突 ...

  8. DeepSeek-R1 技术全景解析:从原理到实践的“炼金术配方” ——附多阶段训练流程图与核心误区澄清

    字数:约3200字|预计阅读时间:8分钟 (调试着R1的API接口,看着控制台瀑布般流淌的思维链日志)此刻我仿佛看到AlphaGo的棋谱在代码世界重生--这是属于推理模型的AlphaZero时刻. D ...

  9. linux安装flink

    参考链接https://blog.csdn.net/boling_cavalry/article/details/85038527   1.下载flink 在Flink官网下载,地址是:https:/ ...

  10. 如何在ubuntu[linux] 上用docker安装Sqlserver

    本次按照目前最新版本Sqlserver2022进行记录 先决条件 任何受支持的 Linux 发行版上的 Docker 引擎 1.8 及更高版本. 有关详细信息,请参阅 Install Docker(安 ...