当前位置:网站首页>【使用JDBC对数据库表进行操作】
【使用JDBC对数据库表进行操作】
2022-08-06 23:49:00 【*年夕】
使用JDBC对数据库表进行操作(创建表、插入数据、更新数据、删除数据)
编程题
1、写一个JDBC类,包括3个方法,分别实现对用户表的如下操作。
JDBC应用程序大概有以下六个步骤
1、创建连接对象
2、创建执行SQL语句的命令对象
3、执行sql语句
4、获取结果:
如果是查询获取结果集如果是更新 获取 影响的行数
5、如果是查询 需要从结果集中获取数据
6、关闭所有资源 先创建的对象后关闭
DBUtil.java
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 获取连接
public static Connection getConnection() {
Connection conn=null;
String url="jdbc:mysql://localhost:3306/java01?useUnicode=true&characterEncoding=utf-8";
String username="****";
String password="****";
try {
conn=DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// 释放资源
public static void close(Connection conn,Statement st,ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}
if(st!=null) {
st.close();
}
if(conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
方法接口
public interface User1dao {
public int doAdd(User1 u);
public int doUpdate(User1 u);
public int doDelete(User1 u);
}
建立一个实体类User
package AA1;
import java.sql.Date;
public class User1 {
private String name;
private String pwd;
private String email;
private Date birthday;
public User1() {
super();
}
public User1(String name, String pwd, String email, Date birthday) {
super();
this.name = name;
this.pwd = pwd;
this.email = email;
this.birthday = birthday;
}
@Override
public String toString() {
return "User1 [name=" + name + ", pwd=" + pwd + ", email=" + email + ", birthday=" + birthday + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
方法实现类
package AA1;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;
import util.DBUtil;
public class Test1_table implements User1dao {
//创建表
public static void doCreatetable(){
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
conn=DBUtil.getConnection();
String sql="create table User1(name varchar(20) primary key,pwd varchar(6) not null,email varchar(64),birthday date)";
st=conn.createStatement();
int i=st.executeUpdate(sql); //执行更新语句
System.out.println("CreateTable ok,i="+i);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(conn, st, rs);
}
}
//插入数据
public int doAdd(User1 u) {
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
int i=0;
try {
conn=DBUtil.getConnection();
String sql="insert into User1(name,pwd,email,birthday) values(?,?,?,?)";
st=conn.prepareStatement(sql);
st.setString(1, u.getName());
st.setString(2, u.getPwd());
st.setString(3, u.getEmail());
st.setDate(4, u.getBirthday());
i=st.executeUpdate(); //执行更新语句
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(conn, st, rs);
}
return i;
}
// 更新数据
public int doUpdate(User1 u) {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
int i=0;
try {
conn=DBUtil.getConnection();
String sql="UPDATE user1 SET birthday=CURRENT_TIMESTAMP WHERE name='张三'";
st=conn.createStatement();
i=st.executeUpdate(sql); //执行更新语句
System.out.println("update ok,i="+i);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(conn, st, rs);
}
return i;
}
// 删除数据
public int doDelete(User1 u) {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
int i=0;
try {
conn=DBUtil.getConnection();
String sql="delete from User1 where name='李四'";
st=conn.createStatement();
i=st.executeUpdate(sql); //执行更新语句
System.out.println("delete ok,i="+i);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(conn, st, rs);
}
return i;
}
}
在写生日更新为当前时间一开始想的有点复杂,之后查了一下MySQL语句更新当前时间的方法,就使用了current_timestamp来获取当前时间。
timestamp 时间戳
时间戳字段定义主要影响两类操作:
插入记录时,时间戳字段包含DEFAULT CURRENT_TIMESTAMP,如插入记录时未指定具体时间数据则将该时间戳字段值设置为当前时间
更新记录时,时间戳字段包含ON UPDATE CURRENT_TIMESTAMP,如更新记录时未指定具体时间数据则将该时间戳字段值设置为当前时间
测试类
package AA1;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import dao.UserDao;
import dao.UserDaoImpl;
public class Test01a {
private static User1dao dao = new Test1_table();
public static void main(String[] args) {
// inserttest();
// updatetest();
deletetest();
}
public static void inserttest() {
SimpleDateFormat sdf = new SimpleDateFormat("YY-MM-DD");
java.util.Date date;
int i=0;
try {
date = sdf.parse("1986-10-11");
User1 u1 = new User1("张三", "888888", "[email protected]", new Date(date.getTime()));
i = dao.doAdd(u1);
date = sdf.parse("1988-10-23");
User1 u2 = new User1("李四", "999999", "[email protected]", new Date(date.getTime()));
i = dao.doAdd(u2);
date = sdf.parse("1990-9-11");
User1 u3= new User1("王五", "777777", "[email protected]", new Date(date.getTime()));
i = dao.doAdd(u3);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("insert ok" + i);
}
public static void updatetest() {
int i=0;
User1 up=new User1();
i=dao.doUpdate(up);
}
public static void deletetest() {
int i=0;
User1 ud=new User1();
i=dao.doDelete(ud);
}
}
边栏推荐
猜你喜欢

What is the matter with several IP addresses of this machine?to analyze

"NIO Cup" 2022 Nioke Summer Multi-School Training Camp 6, sign-in question GJBMA

SmartIDE v1.0.23 一个非常不敏捷的发布

(ECCV-2022)GaitEdge:超越普通的端到端步态识别,提高实用性(续)

Those MP3s who are reluctant to delete--modify the ID3tag of mp3 in batches

关于接口的安全性测试,这几点你必须掌握

推荐一款管理系统专用低代码工具,一天开发一个系统不是梦!

最长偶串的长度

leetcode 19. 删除链表的倒数第 N 个结点

在EXCEL中正确使用逗号分隔的CSV文件
随机推荐
设计电商秒杀系统
加密钱包中的“冷存储”和“热存储”该如何选择?
接口的安全设计的几大要素:ticket,签名,时间戳
bugku easy_nbt
【超好懂的比赛题解】National Taiwan University NCPC Preliminary 2021 比赛题解
cxf反向根据.net wsdl内容生成服务器端代码
双十一接口流量突增,如何做好性能调优?
MySQL操作之DQL
安静的思考
分布式中,session存储问题
mysql5.5最简安装教程
openharmony萌新贡献指南
Zscoder‘s 生成函数教程(二)
TypeError: list indices must be integers or slices, not float
MySql操作之DDL
PAT serie B - A + B B1022 D base (20)
读书有利于生活
推荐一款管理系统专用低代码工具,一天开发一个系统不是梦!
Arrangement of knowledge points in public relations
three.js 第五十五用 给shader传递uniform注意事项