Java的数据库操作

article/2025/11/3 2:33:49

Java的数据库操作,上学期末的课设是用到的,然而老师把JDBC连接mysql数据库的代码和配置文件已经给好了,那时对它可以说是只有一点点印象。

今天跟着书走一边敲一边,总算是有所进步。

数据库表的创建和初始数据的操作,都是在数据库的前端管理工具Navicat里进行的,创建的表如下:

主要注意点就是id设置成主键之后,一定要选择红色箭头的三个选项,需要哪个点哪个。不然只有那个key钥匙,不仅在表里面输入数据时你会迷茫,而且JDBC里面也会出现问题。

接下来就是:

package Java的数据库操作;import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import javax.print.attribute.standard.PDLOverrideSupported;/** 上学期最后课程设计用了这个,然后当时是老师给好的* 今天来自己动手过一遍,看一遍,练习一遍* 这个是数据库连接操作时,需要的类,并且注意,这是父类* 所以说后面需要使用到关于数据库操作的类,都是要继承此父类的* 这个父类负责打开数据库连接,关闭数据库操作对象*/public class DBConnection {//连接属性定义区,言下之意就是这些属性都是和数据库有关咯private final static String CLS="com.mysql.jdbc.Driver";	private final static String URL="jdbc:mysql://localhost:3306/amis";private final static String UESR="root";private final static String PWD="y888888";//公共数据库操作对象,这些是Java里面的功能吗?进一步说是java的jdbc中的功能public static Connection conn=null;			//连接对象public static Statement stmt=null;			//命令集对象public static PreparedStatement pStmt=null;	//预编译命令集对象public static ResultSet rs=null;			//结果集对象//打开连接的方法public static void getConnection() {try {Class.forName(CLS);											//加载驱动类conn=DriverManager.getConnection(URL, UESR, PWD);			//打开连接} catch (Exception e) {System.out.println("连接失败");e.printStackTrace();}}//关闭所有的数据库操作对象的方法public static void closeAll() {try {if (rs!=null){rs.close();rs=null;}if (stmt!=null){stmt.close();stmt=null;}if (pStmt!=null){pStmt.close();pStmt=null;}if (conn!=null){conn.close();conn=null;}} catch (Exception e) {e.printStackTrace();}}}
注释里面已经说了说,这里我来说说四个公共数据库操作对象,

Connection是每次需要开始操作连接对象而使用的

Statement和PreparedStatement,现在就我来说,这两个就是需要获取数据库内容,对内容进行操作所,而诞生的,是两个功能类。

http://www.jb51.net/article/76950.htm 这里对这俩进行了较详细的讲解,如果想深入了解的可以看看。

ResultSet,数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等。http://blog.csdn.net/ustcxjt/article/details/7289345



在数据库连接父类建立完成之后,就开始对对象类进行创建,这样才知道在具体数据库操作的时候要干什么

package Java的数据库操作;
/** 此类就是一个对象类:会员*/
public class Academician {private int id;private String stuName;private String stuDept;private String stuClass;private String inDt;private String outDt;private String tell;private boolean BLeave;public Academician(){}public Academician(int i,String n,String d,String c,String in,String o,String t,boolean b){this.id=i;this.stuName=n;this.stuDept=d;this.stuClass=c;this.inDt=in;this.outDt=o;this.tell=t;this.BLeave=b;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public String getStuDept() {return stuDept;}public void setStuDept(String stuDept) {this.stuDept = stuDept;}public String getStuClass() {return stuClass;}public void setStuClass(String stuClass) {this.stuClass = stuClass;}public String getInDt() {return inDt;}public void setInDt(String inDt) {this.inDt = inDt;}public String getOutDt() {return outDt;}public void setOutDt(String outDt) {this.outDt = outDt;}public String getTell() {return tell;}public void setTell(String tell) {this.tell = tell;}public boolean isBLeave() {return BLeave;}public void setBLeave(boolean bLeave) {BLeave = bLeave;}}
然而今天get了一个方法,就是不在繁琐的自己创建set、get方法,eclipse里面是会有多的小功能。

在类文件编辑界面中右击-》选择Source-》选择Generate Getters and Setters,之后你就会明白了。




然后就对你的需要进行的操作,创建以下

package Java的数据库操作;import java.beans.Statement;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.List;/** 这个就是继承了数据库操作的父类* 对数据库中的会员信息进行操作,代码中也就是对会员信息类进行一系列配合sql语句的操作*/
public class AcademicianDao extends DBConnection{//使用命令集获取所有会员信息的方法public List<Academician> getAllAcademician() {List<Academician> list=new ArrayList<Academician>();try {getConnection();stmt=conn.createStatement();String sql="select * from Academician";rs=stmt.executeQuery(sql);while (rs.next()){Academician item=new Academician();item.setId(rs.getInt("id"));item.setStuName(rs.getString("stuName"));item.setStuDept(rs.getString("stuDept"));item.setStuClass(rs.getString("stuClass"));item.setInDt(rs.getString("inDt"));item.setOutDt(rs.getString("outDt"));item.setTell(rs.getString("tell"));item.setBLeave(rs.getBoolean("bleave"));list.add(item);}} catch (Exception e) {e.printStackTrace();} finally {closeAll();}return list;}//添加会员信息的方法public int addAcademician(Academician item) {int iRow=0;try {getConnection();String sql="insert into Academician(id,stuName,stuDept,stuClass,inDt,outDt,tell,bleave) values(?,?,?,?,?,?,?,?)";pStmt=conn.prepareStatement(sql);pStmt.setInt(1, item.getId());pStmt.setString(2, item.getStuName());pStmt.setString(3, item.getStuDept());pStmt.setString(4, item.getStuClass());pStmt.setString(5, item.getInDt());pStmt.setString(6, item.getOutDt());pStmt.setString(7, item.getTell());pStmt.setBoolean(8, item.isBLeave());iRow=pStmt.executeUpdate();				//更新数据库} catch (Exception e) {e.printStackTrace();}finally {closeAll();}return iRow;}//修改会员信息的方法public int editAcademician(Academician item) {int iRow=0;try {getConnection();String sql="update Academician set stuName=?,stuDept=?,stuClass=?,inDt=?,outDt=?,"+"tell=?,bleave=? where id=?";pStmt=conn.prepareStatement(sql);pStmt.setString(1, item.getStuName());pStmt.setString(2, item.getStuDept());pStmt.setString(3, item.getStuClass());pStmt.setString(4, item.getInDt());pStmt.setString(5, item.getOutDt());pStmt.setString(6, item.getTell());pStmt.setBoolean(7, item.isBLeave());pStmt.setInt(8, item.getId());iRow=pStmt.executeUpdate();				//更新数据库} catch (Exception e) {e.printStackTrace();}finally {closeAll();}return iRow;}//删除会员信息的方法public int delAcademician(int id) {int iRow=0;try {getConnection();String sql="delete from Academician where id=?";pStmt=conn.prepareStatement(sql);pStmt.setInt(1, id);iRow=pStmt.executeUpdate();} catch (Exception e) {e.printStackTrace();}finally {closeAll();}return iRow;}
}
在这里,你将看到父类中四个公共操作对象的使用,同样也可以看到sql语句和java的结合之处在哪里。

当然,这里学习的只是一种方法,上学期末的课设里面今天一看,他喵的还是另外一种。部分例子如下:

package xupt.se.ttms.dao;import java.util.LinkedList;
import java.util.List;
import java.sql.ResultSet;
import java.sql.SQLException;
import xupt.se.ttms.idao.iStudioDAO;
import xupt.se.ttms.model.Studio;
import xupt.se.util.DBUtil;public class StudioDAO implements iStudioDAO {@Overridepublic int insert(Studio stu) {try {String sql = "insert into studio(studio_name, studio_row_count, studio_col_count, studio_introduction )"+ " values('"+ stu.getName()+ "', "+ stu.getRowCount()+ ", " + stu.getColCount() + ", '" + stu.getIntroduction()+ "' )";DBUtil db = new DBUtil();db.openConnection();ResultSet rst = db.getInsertObjectIDs(sql);if (rst!=null && rst.first()) {stu.setID(rst.getInt(1));}db.close(rst);db.close();return 1;} catch (Exception e) {e.printStackTrace();}return 0;}@Overridepublic int update(Studio stu) {int rtn=0;try {String sql = "update studio set " + " studio_name ='"+ stu.getName() + "', " + " studio_row_count = "+ stu.getRowCount() + ", " + " studio_col_count = "+ stu.getColCount() + ", " + " studio_introduction = '"+ stu.getIntroduction() + "' ";sql += " where studio_id = " + stu.getID();DBUtil db = new DBUtil();db.openConnection();rtn =db.execCommand(sql);db.close();} catch (Exception e) {e.printStackTrace();}return rtn;}@Overridepublic int delete(int ID) {int rtn=0;		try{String sql = "delete from  studio ";sql += " where studio_id = " + ID;DBUtil db = new DBUtil();db.openConnection();rtn=db.execCommand(sql);db.close();} catch (Exception e) {e.printStackTrace();}return rtn;		}@Overridepublic List<Studio> select(String condt) {List<Studio> stuList = null;stuList=new LinkedList<Studio>();try {String sql = "select studio_id, studio_name, studio_row_count, studio_col_count, studio_introduction from studio ";condt.trim();if(!condt.isEmpty())sql+= " where " + condt;DBUtil db = new DBUtil();if(!db.openConnection()){System.out.print("fail to connect database");return null;}ResultSet rst = db.execQuery(sql);if (rst!=null) {while(rst.next()){Studio stu=new Studio();stu.setID(rst.getInt("studio_id"));stu.setName(rst.getString("studio_name"));stu.setRowCount(rst.getInt("studio_row_count"));stu.setColCount(rst.getInt("studio_col_count"));stu.setIntroduction(rst.getString("studio_introduction"));stuList.add(stu);}}db.close(rst);db.close();} catch (Exception e) {e.printStackTrace();}finally{}return stuList;}
}

所以说还有其它方法来完成数据库和java的连接和具体实现功能,但是总得思路不要错。



最后,就是测试用例的main和运行结果

package Java的数据库操作;import java.util.List;public class testAMis {public static void main(String[] args) {AcademicianDao dao=new AcademicianDao();System.out.println("会员列表信息如下");showAcademician(dao.getAllAcademician());Academician item=new Academician(2, "c", "c1", "c2", "2016-01-01 00:00:00", null, "18991237658", false);dao.addAcademician(item);item=new Academician(3, "d", "d1", "d2", "2016-02-01 00:00:00", null, "15698123546", false);dao.addAcademician(item);System.out.println("添加后会员列表信息如下");showAcademician(dao.getAllAcademician());item.setId(3);item.setOutDt("2018-01-01 00:00:00");item.setBLeave(true);dao.editAcademician(item);System.out.println("修改后会员列表信息如下");showAcademician(dao.getAllAcademician());dao.delAcademician(2);System.out.println("删除后会员列表信息如下");showAcademician(dao.getAllAcademician());}private static void showAcademician(List<Academician> allAcademician) {System.out.println("id\t会员名\t所在院系\t所在班级\t入会时间\t离会时间\t联系电话\t是否在会");for (Academician item:allAcademician){System.out.println(item.getId()+"\t"+item.getStuName()+"\t"+item.getStuDept()+"\t"+item.getStuClass()+"\t"+item.getInDt()+"\t"+item.getOutDt()+"\t"+item.getTell()+"\t"+get_str_from_bleave(item.isBLeave()));}}public static String get_str_from_bleave(boolean bleave) {String s="在会中";if (bleave){s="离会";}return s;}}



总之今天就是对JDBC有了进一步认识,我认为就是我们现在需要多认识,多见面,首先要知道有哪些功能,都是干什么,怎么用,java里面的优势和劣势可以说同时出现在这里,优势就是确实只要知道怎么用,以后随时可以用,但劣势就是要掌握的好多。

因为,积累,沉淀,学习乃当前之道。


http://chatgpt.dhexx.cn/article/vVgUkpws.shtml

相关文章

一文详解python中的数据库操作

python中的数据库操作 一、数据库编程接口1. 连接对象 二、使用内置的SQLite1.创建数据库文件2.操作SQLite 三、MySql数据库的使用3.1 安装MySql3.2 设置环境变量3.3 启动MySql3.4 使用navicat for mysql 管理软件3.5 安装PyMysql模块3.6 连接数据库 四、创建数据表4.1 创建boo…

数据库操作练习题

如何查看员工表中的所有字段&#xff1f; 如何查看员工表中的姓名和性别&#xff1f; 如何知道每个员工一年的总收入&#xff1f; 怎么查看女员工的信息&#xff1f; 如何查看月薪范围位于 8000 到 12000 之间的员工&#xff1f; 查询员工中叫做“张三”、“李四” 或“张飞”的…

MySQL(一)数据库操作

1.关系型数据库与非关系型数据库区别与联系 1.关系型数据库 ( SQL ) MySQL , Oracle , SQL Server , SQLite , DB2 , … 关系型数据库通过外键关联来建立表与表之间的关系 2.非关系型数据库 ( NOSQL ) Redis , MongoDB , … 非关系型数据库通常指数据以对象的形式存储在数据…

使用ORACLE 进行数据库操作

上一期讲了 如何创建表&#xff0c;例如我们创建了一个 名为 t_customer 的表&#xff0c;格式为下&#xff1a; create table t_customer(cust_id int primary key,cust_name varchar(20),cust_gender char(3),cust_age int,cust_birthday date,cust_height number(3,2),cust…

C#数据库操作

功能需求 1&#xff0c;利用随机数模拟产生每次考试成绩 2&#xff0c;将每次考试成绩存入到数据库 3&#xff0c;将每次考试成绩划分优、良、中、差、不及格五类&#xff0c;并作为查询条件&#xff0c;查询符合每种水平的成绩 技术知识点 1.random类的使用 2.数据库的链…

云数据库操作

1 云数据库创建 每一个list就相当于一个表&#xff0c;每个记录就是一条内容 云数据库存储形式是JSON2 读取云数据库值 数据库初始化 const db wx.cloud.database() 连接数据库 db.collection(需要连接的数据列表名)可以通过.doc(‘具体id号’)获取具体的信息内容获取年、月…

Android数据库操作

Android内置了一个名为SQLite的关系型数据库&#xff0c;这是一款轻量型的数据库&#xff0c;操作十分简便。SQLite与别的数据库不同的是&#xff0c;它没有数据类型。可以保存任何类型的数据到你所想要保存的任何表的任何列中。但它又支持常见的类型比如: NULL, VARCHAR, TEXT…

数据库基本操作

一、数据库基本操作 1.数据库的基本操作 -- 1.数据库的基本操作 使用test数据库 USE test; -- 查看当前test数据库中所有表 MySQL命令 SHOW TABLES; -- 查表的基本信息 SHOW CREATE TABLE student; -- -- 查看表的字段信息 desc student; 2.数据表的基本操作 -- 2.数据表的…

数据库基础操作

一、数据库的操作 数据库与客户端是通过网络进行交互的。 1、显示当前数据库 sql语句必须以 ; 结尾 show databases; 2、创建数据库 create database 数据库名; ->如果数据库sql敲错了&#xff0c;会有提示。 ->如果sql敲错了&#xff0c;可以按 ctrlc来终止sql。…

数据库的基本操作

目录 一、数据库的基本操作 1、数据库的登录及退出 2、查看所有数据库 3、显示数据库版本 4、显示时间 5、创建数据库 6、查看创建数据库的语句 7、查看当前使用的数据库 8、查看当前用户 9、使用某个数据库 10、删除数据库 二、数据表的基本操作 1、查看当前数据…

如何在IDEA上创建一个JSP项目【亲测有效】

idea上创建一个jsp项目 1、创建一个Java项目 2、创建成功后右击项目名称&#xff0c;点击Add Framework support 3、选择web application 选择适合版本&#xff0c;创建 4、创建成功后项目中会出现web文件夹 5、点击属性&#xff0c;进行配置 6、在project中配置jdk(你自己电脑…

Eclipse中安装配置Tomcat和创建JSP项目

这里写自定义目录标题 安装配置Tomcat创建JSP项目 安装配置Tomcat 下载并解压Tomcat到指定目录Eclipse菜单栏中找到Window–>Preperences->Server->Runtime Environments->Add 3.选择Tomcat文件夹 4.在Eclipse中找到Servers视图窗口&#xff0c;创建Tomcat服务…

springBoot+JSP搭建项目

1.springBoot对JSP的支持 springBoot虽然支持JSP&#xff0c;但是官方不建议使用&#xff0c;下面是官方文档解释 When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations…

IntelliJ IDEA中创建jsp项目

创建java项目 首先需要创建一个普通的java项目 这一步很简单就不用多说了&#xff0c;按照正常操作来就行了 创建好的目录结果如下 创建Moudle 在IDEA中jsp项目是Project中的一个Moudle&#xff0c;因此我们就需要在jsp中创建一个moudle 然后Next 输入moudle名称 finishe…

IntelliJ IDEA 2021.1.2 x64版的 IDEA 创建 jsp项目

在创建jsp项目前需要 搭建JSP开发环境&#xff08;配置Tomcat服务器&#xff09;&#xff1a;https://blog.csdn.net/qq_51444577/article/details/118409179 1、 创建jsp项目 先创建一个项目 创建一个java项目 一直按next键&#xff0c;给项目取个名如 jsp03&#xff0c;按…

使用eclipse创建的第一个jsp项目

1.创建web项目 首先打开eclipse->file->new->Dymanic Web Project(如果没有这个选项&#xff0c;选other&#xff0c;打开搜索web) 点finish&#xff0c;web项目创建成功 2.创建jsp 进行第一个jsp页面的编写。右键选择目录下面的WebRoot文件夹&#xff0c;然后new…

Java EE之idea创建和运行jsp项目

1.点击打开Inteliij点击Create New Project 2.点击java,再左侧Project SDK选择安装的jdk路径&#xff0c;勾选WebApplication和Create web.xml。点击next 4.再新弹出的窗口中&#xff0c;Project name中填写项目名称这里写的是Web0903,对应的Project location也会创建一个Web…

JSP项目引入Vue.js进行项目开发(工程搭建)

Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0…

eclipse创建第一个JSP项目

前言 ​ 本文的内容由四个部分组成&#xff0c;分别为①Tomcat的安装与配置&#xff0c;②创建第一个JSP项目&#xff0c;③打包JSP项目到Tomcat服务器上并在浏览器中运行&#xff0c;④eclipse的一些java Web的一些设置。 1、Tomcat安装与配置 ​ 到Tomcat官网下载Tomcat相…

Idea中新建Servlet+JSP项目

文章目录 前言一、Servlet 是什么&#xff1f;二、JSP 是什么&#xff1f;三、怎么在 IDEA 中新建 Servlet 项目&#xff1f;1. 新建项目2. 选择 Java Enterprise3. 选择 规范 Servlet步骤4. 删除不用的 pom.xml步骤5. 编辑运行配置&#xff0c;设置 JRE 总结 前言 随着学习 Ja…