MySQL 内  Learn数据库中的 student_info表 中的字段信息为:

将字段数据封装,StudentInfo.java

package com.jdbc.model;

/*

* student_info表的实体类

* */

public class StudentInfo {

public StudentInfo() {

}

public StudentInfo(Integer id, String name, String sex, Double score, String birthday) {

this.id = id;

this.name = name;

this.sex = sex;

this.score = score;

this.birthday = birthday;

}

public StudentInfo(String name, String sex, Double score, String birthday) {

this.name = name;

this.sex = sex;

this.score = score;

this.birthday = birthday;

}

private Integer id;

private String name;

private String sex;

private Double score;

private String birthday;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public Double getScore() {

return score;

}

public void setScore(Double score) {

this.score = score;

}

public String getBirthday() {

return birthday;

}

public void setBirthday(String birthday) {

this.birthday = birthday;

}

//重写显示

@Override

public String toString() {

return "StudentInfo [id=" + id + ", name=" + name + ", sex=" + sex + ", score=" + score + ", birthday="

+ birthday + "]";

}

}

将数据库连接方法封装,为静态方法,可直接类名调用。ConnectionDB.java

package com.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class ConnectionDB {

private static String url = "jdbc:mysql://localhost:3306/learn?useUnicode=true&characterEncoding=utf-8";

private static String username = "root"; //MySQL账号

private static String password = "123456"; //MySQL密码

private static Connection conn;

/**

* 获取数据库连接

* @return

*/

public static Connection getConn() {

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

try {

conn = DriverManager.getConnection(url, username, password);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

}

接下来不利用任何框架,封装数据库增删改查方法,并做测试。StudentInfoDao.java

package com.jdbc.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import com.jdbc.ConnectionDB;

import com.jdbc.model.StudentInfo;

/**

* StudentInfostudent_info

* O(Object)R(Relation)映射 不使用Mybatis,jpa ....框架

*/

public class StudentInfoDao {

/**

* 新增学生

* @param studentInfo

*/

public void add(StudentInfo studentInfo) {

// 连接数据库

Connection conn = ConnectionDB.getConn();

String sql = "insert into student_info(name,sex,birthday,score) values(?,?,?,?)";

try {

// 绑定

PreparedStatement pst = conn.prepareStatement(sql);

// 通过对象往数据库中add数据

// 几个问号几句 (从1开始)

pst.setString(1, studentInfo.getName());

pst.setString(2, studentInfo.getSex());

pst.setString(3, studentInfo.getBirthday());

pst.setDouble(4, studentInfo.getScore());

pst.executeUpdate();

// 关闭数据库

pst.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

* 根据主键删除相应数据库中的数据

* @param id

*/

public void delById(Integer id) {

// 连接数据库

Connection conn = ConnectionDB.getConn();

String sql = "delete from student_info where id=?";

try {

// 绑定

PreparedStatement pst = conn.prepareStatement(sql);

// 几个问号几句(从1开始)

pst.setInt(1, id);

pst.executeUpdate();

// 关闭数据库

pst.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

* 根据主键加载学生

* @param id

* @return

*/

public StudentInfo selById(Integer id) {

// 连接数据库

Connection conn = ConnectionDB.getConn();

// 将查询得的数据存储进对象中,关系到对象的映射

StudentInfo studentInfo = new StudentInfo();

String sql = "select id,name,sex,birthday,score from student_info where id=?";

try {

// 绑定

PreparedStatement pst = conn.prepareStatement(sql);

// 几个问号几句(从1开始)

pst.setInt(1, id);

ResultSet rs = pst.executeQuery(); //rs为查询指针,初始指向要查询对象的前一个位置

if(rs.next()) {

//将查询结果存进对象

studentInfo.setId(rs.getInt("id"));

studentInfo.setName(rs.getString("name"));

studentInfo.setSex(rs.getString("sex"));

studentInfo.setBirthday(rs.getString("birthday"));

studentInfo.setScore(rs.getDouble("score"));

}

// 关闭数据库

pst.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

return studentInfo;

}

/**

* 修改学生

* @param studentInfo

*/

public void update(StudentInfo studentInfo) {

// 连接数据库

Connection conn = ConnectionDB.getConn();

String sql = "update student_info set name=?,sex=?,birthday=?,score=? where id=?";

try {

// 绑定

PreparedStatement pst = conn.prepareStatement(sql);

// 不修改的保持原数据

// 几个问号几句(从1开始)

pst.setString(1, studentInfo.getName());

pst.setString(2, studentInfo.getSex());

pst.setString(3, studentInfo.getBirthday());

pst.setDouble(4, studentInfo.getScore());

pst.setInt(5, studentInfo.getId());

pst.executeUpdate();

// 关闭数据库

pst.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

* 查询所有学生, 所有则通过list返回全部学生

* @return

*/

public List selAll(){

// 连接数据库

Connection conn = ConnectionDB.getConn();

// 新建list列表存对象

List list = new ArrayList<>();

String sql = "select id,name,sex,birthday,score from student_info";

PreparedStatement pst;

try {

// 绑定

pst = conn.prepareStatement(sql);

ResultSet rs = pst.executeQuery(); //rs指针指向要查询的对象的前一个位置

while(rs.next()) {

// 新建对象

StudentInfo studentInfo = new StudentInfo();

studentInfo.setId(rs.getInt("id"));

studentInfo.setName(rs.getString("name"));

studentInfo.setSex(rs.getString("sex"));

studentInfo.setBirthday(rs.getString("birthday"));

studentInfo.setScore(rs.getDouble("score"));

// 添加进list

list.add(studentInfo);

}

// 关闭数据库

pst.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

return list;

}

//调用测试

public static void main(String[] args) {

// 日期转字符串

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String nowDate = sdf.format(date);

StudentInfo si = new StudentInfo("Lily","1",100.0,nowDate);

//new 工具对象

StudentInfoDao studentDao = new StudentInfoDao();

// 直接调用内部方法

studentDao.add(si); // 添加

studentDao.delById(4); // 删除

si = studentDao.selById(17); // 查询

System.out.println("update 前 " + si); //调用内部的toString方法,输出查询到的数据

si.setName("Jim");

si.setSex("0");

studentDao.update(si); // 对上面查询到的数据重新设置值

si = studentDao.selById(17);

System.out.println("update 后 " + si);

List list = studentDao.selAll(); // 查询全部

// 范型输出查询到的列表

System.out.println("输出全部列表:");

for(StudentInfo item:list) {

System.out.println(item);

}

}

}

链接mysql工具封装_JDBC——java连接MySQL封装处理相关推荐

  1. Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)

    1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...

  2. 【工作笔记】如何在MySQL官网下载Java连接MySQL数据库的驱动jar包

    我们在开发时,Java连接MySQL数据库需要驱动jar包,而驱动包的版本要跟MySQL数据库版本相匹配,以下介绍怎样在MySQL官网下载各MySQL数据库对应版本的驱动包. 1.登陆Oracle官网 ...

  3. java创建mysql驱动,JDBC之Java连接mysql实现增删改查

    使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...

  4. java连接MySQL几种方法_Java连接MySQL数据库三种方法

    好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...

  5. java 连接mysql工具类_java连接Mysql数据库的工具类

    一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...

  6. JDBC: Java连接MySQL

    文章目录 一.Java连接MySQL数据库步骤 二.JDBC基本操作:CRUD 2.1 Statement 2.2 ResultSet 之滚动结果集(了解) 2.3 示例: 查询用户 2.4 DBUt ...

  7. Java连接MySQL数据库的超级详细步骤(Windows)

    1. 数据准备 1. 下载JDK 下载Java开发工具包JDK,下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads ...

  8. 五十二、Java连接Mysql数据库

    @Author:Runsen @Date:2019/10/15 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不 ...

  9. JAVA——Java连接MySQL数据库

    1.配置环境 Java 连接 MySQL 需要驱动包 最新版下载地址为:http://dev.mysql.com/downloads/connector/j/ 解压后得到jar库文件,然后在对应的项目 ...

  10. mysql连接java程序_实现Java连接mysql

    Java连接mysql数据库,代码经过运行准确无误. 下面为实例----> 用数据库操纵工具(例: SQLyogEnt)操纵mysql建表,或dos下建,如下: 数据库名:scutcs 表名:s ...

最新文章

  1. angularjs 让当前路由重新加载_Vuerouter(路由)
  2. len(x) 击败 x.len(),从内置函数看 Python 的设计思想
  3. CGAN生成cifar10, cifar100, mnist, fashion_mnist,STL10,Anime图片(pytorch)
  4. 【项目管理】绩效域-工件裁剪对照(工件维度)
  5. 加载如下html 写出输出顺序,浏览器加载和渲染html的顺序-结论篇
  6. 3224: Tyvj 1728 普通平衡树
  7. 【OPTEE开发】从TA到PTA的功能设计
  8. 说一说windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)...
  9. scala 偏函数与 map/collect
  10. 牛逼!IDEA不愧为神器,结合Groovy脚本,简直天下无敌!
  11. redis windows切割日志文件_开发者笔记:Windows下搭建简易单机Redis集群测试环境...
  12. u盘linux系统 隐藏文件,轻松显示U盘隐藏的文件夹绝招
  13. eclipse 中使用@slf4j报log找不到
  14. html文件记事本打开乱码,如何解决记事本打开出现乱码
  15. Openresty实现web应用防火墙(waf)
  16. python 入门零碎知识点
  17. python协程实现一万并发_python进阶:服务端实现并发的八种方式
  18. 面试完总是让你回去等通知?不,告诉你怎么抢救下!
  19. 游戏特效贴图的制作与应用
  20. PC实现路由器的基本功能

热门文章

  1. python脚本报错:OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
  2. Linux Unix shell 编程指南学习笔记(第二部分)
  3. Python开发的一个IDE推荐,Sublime Text 3
  4. 实习技术员的基本功(十)
  5. 利用Python制作微信跳一跳外挂,又来带你装一波X!
  6. python 字符串编码 str和unicode 区别以及相互转化 decode('utf-8') encode('utf-8')
  7. 微信小程序开发 -- 获取当前页面路径
  8. [译]ASP.NET Core 2.0 全局配置项
  9. 中国人工智能学会通讯——一种基于众包的交互式数据修复方法 3 给定质量约束下的交互式算法...
  10. 装饰模式(Decorate Pattern)