链接mysql工具封装_JDBC——java连接MySQL封装处理
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封装处理相关推荐
- Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)
1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...
- 【工作笔记】如何在MySQL官网下载Java连接MySQL数据库的驱动jar包
我们在开发时,Java连接MySQL数据库需要驱动jar包,而驱动包的版本要跟MySQL数据库版本相匹配,以下介绍怎样在MySQL官网下载各MySQL数据库对应版本的驱动包. 1.登陆Oracle官网 ...
- java创建mysql驱动,JDBC之Java连接mysql实现增删改查
使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...
- java连接MySQL几种方法_Java连接MySQL数据库三种方法
好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...
- java 连接mysql工具类_java连接Mysql数据库的工具类
一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...
- JDBC: Java连接MySQL
文章目录 一.Java连接MySQL数据库步骤 二.JDBC基本操作:CRUD 2.1 Statement 2.2 ResultSet 之滚动结果集(了解) 2.3 示例: 查询用户 2.4 DBUt ...
- Java连接MySQL数据库的超级详细步骤(Windows)
1. 数据准备 1. 下载JDK 下载Java开发工具包JDK,下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads ...
- 五十二、Java连接Mysql数据库
@Author:Runsen @Date:2019/10/15 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不 ...
- JAVA——Java连接MySQL数据库
1.配置环境 Java 连接 MySQL 需要驱动包 最新版下载地址为:http://dev.mysql.com/downloads/connector/j/ 解压后得到jar库文件,然后在对应的项目 ...
- mysql连接java程序_实现Java连接mysql
Java连接mysql数据库,代码经过运行准确无误. 下面为实例----> 用数据库操纵工具(例: SQLyogEnt)操纵mysql建表,或dos下建,如下: 数据库名:scutcs 表名:s ...
最新文章
- angularjs 让当前路由重新加载_Vuerouter(路由)
- len(x) 击败 x.len(),从内置函数看 Python 的设计思想
- CGAN生成cifar10, cifar100, mnist, fashion_mnist,STL10,Anime图片(pytorch)
- 【项目管理】绩效域-工件裁剪对照(工件维度)
- 加载如下html 写出输出顺序,浏览器加载和渲染html的顺序-结论篇
- 3224: Tyvj 1728 普通平衡树
- 【OPTEE开发】从TA到PTA的功能设计
- 说一说windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)...
- scala 偏函数与 map/collect
- 牛逼!IDEA不愧为神器,结合Groovy脚本,简直天下无敌!
- redis windows切割日志文件_开发者笔记:Windows下搭建简易单机Redis集群测试环境...
- u盘linux系统 隐藏文件,轻松显示U盘隐藏的文件夹绝招
- eclipse 中使用@slf4j报log找不到
- html文件记事本打开乱码,如何解决记事本打开出现乱码
- Openresty实现web应用防火墙(waf)
- python 入门零碎知识点
- python协程实现一万并发_python进阶:服务端实现并发的八种方式
- 面试完总是让你回去等通知?不,告诉你怎么抢救下!
- 游戏特效贴图的制作与应用
- PC实现路由器的基本功能
热门文章
- python脚本报错:OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
- Linux Unix shell 编程指南学习笔记(第二部分)
- Python开发的一个IDE推荐,Sublime Text 3
- 实习技术员的基本功(十)
- 利用Python制作微信跳一跳外挂,又来带你装一波X!
- python 字符串编码 str和unicode 区别以及相互转化 decode('utf-8') encode('utf-8')
- 微信小程序开发 -- 获取当前页面路径
- [译]ASP.NET Core 2.0 全局配置项
- 中国人工智能学会通讯——一种基于众包的交互式数据修复方法 3 给定质量约束下的交互式算法...
- 装饰模式(Decorate Pattern)