文档章节

java简单的MySQL数据库连接增删改查

指尖残雪
 指尖残雪
发布于 2016/05/22 23:57
字数 1352
阅读 22
收藏 0
点赞 2
评论 0

这是一个简单的学生信息管理,非常小非常简单,适合初学者,下载地址:http://download.csdn.net/detail/bq1073100909/7545941

数据库连接使用的jar文件:mysql-connector-java-5.1.30-bin.jar

项目目录结构


数据库文件:

create database test;


use test;


CREATE TABLE `test`.`student` (
  `stuid` INT NOT NULL AUTO_INCREMENT,
  `stuname` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`stuid`),
  UNIQUE INDEX `id_UNIQUE` (`stuid` ASC));


CREATE TABLE `test`.`course` (
  `courseid` INT NOT NULL AUTO_INCREMENT,
  `coursename` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`courseid`),
  UNIQUE INDEX `courseid_UNIQUE` (`courseid` ASC),
  UNIQUE INDEX `coursename_UNIQUE` (`coursename` ASC));




CREATE TABLE `test`.`stucourse` (
  `stuid` INT NOT NULL,
  `courseid` INT NOT NULL,
  `grade` FLOAT NOT NULL,
  INDEX `f1_idx` (`stuid` ASC),
  INDEX `f2_idx` (`courseid` ASC),
  CONSTRAINT `f1`
    FOREIGN KEY (`stuid`)
    REFERENCES `test`.`student` (`stuid`)
    ON DELETE CASCADE
ON UPDATE CASCADE,
  CONSTRAINT `f2`
    FOREIGN KEY (`courseid`)
    REFERENCES `test`.`course` (`courseid`)
    ON DELETE CASCADE
ON UPDATE CASCADE);




INSERT INTO `test`.`student` (`stuid`, `stuname`) VALUES ('1', '张三');
INSERT INTO `test`.`student` (`stuid`, `stuname`) VALUES ('2', '李四');




INSERT INTO `test`.`course` (`courseid`, `coursename`) VALUES ('1', '语文');
INSERT INTO `test`.`course` (`courseid`, `coursename`) VALUES ('2', '数学');


INSERT INTO `test`.`stucourse`(`stuid`,`courseid`,`grade`) values(1,1,80);
INSERT INTO `test`.`stucourse`(`stuid`,`courseid`,`grade`) values(1,2,90);
INSERT INTO `test`.`stucourse`(`stuid`,`courseid`,`grade`) values(2,1,60);
INSERT INTO `test`.`stucourse`(`stuid`,`courseid`,`grade`) values(2,2,100);


select * from student;


select * from course;


select * from stucourse;


select stuname,coursename,grade from student,course,stucourse where student.stuid=stucourse.stuid and course.courseid=stucourse.courseid;

JDBCMySQL.java文件:


package dao;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class JDBCMySQL {
// 驱动程序就是之前在classpath中配置的jdbc的驱动程序的jar包中
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
// 连接地址是由各个数据库生产商单独提供的,所以需要单独记住
public static final String DBURL = "jdbc:mysql://localhost:3306/test";
// 连接数据库的用户名
public static final String DBUSER = "root";
// 连接数据库的密码
public static final String DBPASS = "root";

Connection conn = null; // 表示数据库的连接的对象
PreparedStatement pstmt = null; // 表示数据库的更新操作
ResultSet rs=null;//结果集

//数据库连接
public void connect() throws SQLException, ClassNotFoundException{
// 1、使用Class类加载驱动程序
Class.forName(DBDRIVER);
// 2、连接数据库
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
}

//插入学生信息
public void insertdate(String name) throws Exception {
this.connect();//数据库连接

String sql = "INSERT INTO student(stuname) VALUES (?) ";

// 3、PreparedStatement接口需要通过Connection接口进行实例化操作
pstmt = conn.prepareStatement(sql) ;// 使用预处理的方式创建对象
pstmt.setString(1, name) ;// 第一个?号的内容
// 执行SQL语句,更新数据库
if(pstmt.executeUpdate()>0){
System.out.println("插入数据成功!学生姓名"+name);
}
this.closeDB();



//删除学生信息
public void deleteStuInfo(String name) throws ClassNotFoundException, SQLException{
this.connect();
String sql = "DELETE FROM `test`.`student` WHERE `stuname`=?; ";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
if(pstmt.executeUpdate()>0){
System.out.println("删除"+name+"学生数据成功!");
}
this.closeDB();


//查询所有学生成绩信息
public void findStuInfo() throws Exception{
int i=0;
int j=0;
float yuwen_total=0;
float shuxue_total=0;
this.connect();
String sql ="select stuname,coursename,grade from student,course,stucourse where student.stuid=stucourse.stuid and course.courseid=stucourse.courseid;";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
System.out.println("姓名           科目           成绩                  等级");
while(rs.next()){
System.out.print(rs.getString(1)+"          ");
System.out.print(rs.getString(2)+"          ");
System.out.print(rs.getFloat(3)+"          ");
System.out.print(rs.getFloat(3)>=60?"及格":"不及格");
System.out.println();
if("语文".equals(rs.getString(2))){
yuwen_total+=rs.getFloat(3);
i++;
}
if("数学".equals(rs.getString(2))){
shuxue_total+=rs.getFloat(3);
j++;
}

}
System.out.println();
System.out.println("语文总分是:"+yuwen_total+"     语文平均分是:"+yuwen_total/i);
System.out.println("数学总分是:"+shuxue_total+"     数学平均分是:"+shuxue_total/j);
this.closeDB();
}
//更新学生信息
public void updateStuInfo(String newName,String oldName) throws Exception{
this.connect();
String sql = "UPDATE `test`.`student` SET `stuname`=? WHERE `stuname`=?; ";
pstmt = conn.prepareStatement(sql) ;// 使用预处理的方式创建对象
pstmt.setString(1, newName) ;// 第一个?号的内容
pstmt.setString(2, oldName) ;
if(pstmt.executeUpdate()>0){
System.out.println("更新数据成功!学生姓名"+newName);
}
this.closeDB();
}

//查询所有学生的信息
public void findStu() throws ClassNotFoundException, SQLException{
this.connect();
String sql ="select stuid,stuname from student;";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
System.out.println("ID          姓名");
while(rs.next()){
System.out.print(rs.getInt(1)+"          ");
System.out.print(rs.getString(2)+"     ");
System.out.println();
}
System.out.println();
this.closeDB();
}

//查询所有科目信息
public void findCourse() throws ClassNotFoundException, SQLException{
this.connect();
String sql ="select courseid,coursename from course;";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
System.out.println("ID          名称");
while(rs.next()){
System.out.print(rs.getInt(1)+"          ");
System.out.print(rs.getString(2)+"     ");
System.out.println();
}
System.out.println();
this.closeDB();


//插入学生成绩
public void insertGrade(int stuid,int courseid,float grade) throws ClassNotFoundException, SQLException{
this.connect();//数据库连接

String sql = "INSERT INTO `test`.`stucourse`(`stuid`,`courseid`,`grade`) values(?,?,?); ";

// 3、PreparedStatement接口需要通过Connection接口进行实例化操作
pstmt = conn.prepareStatement(sql) ;// 使用预处理的方式创建对象
pstmt.setInt(1, stuid) ;// 第一个?号的内容
pstmt.setInt(2, courseid);
pstmt.setFloat(3, grade);
// 执行SQL语句,更新数据库
if(pstmt.executeUpdate()>0){
System.out.println("插入数据成功!");
}
this.closeDB();
}

// 4、关闭数据库 
public void closeDB(){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pstmt!=null){
try {
pstmt.close() ;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


}


Display.java文件:


package dao;


import java.sql.SQLException;
import java.util.Scanner;
public class Display {


JDBCMySQL jdbcMySQL=new JDBCMySQL();
public void display() throws Exception{
Display t=new Display();
String input=null;
Scanner in = new Scanner(System.in);
while(true){
System.out.println("输入:\n1、查询学生信息。\n2、插入学生\n3、修改学生姓名\n4、删除学生信息\n5、插入学生成绩\n0、退出");
input = in.nextLine();
if(input.equals("0")){
System.out.println("感谢使用!");
break;
}else if(input.equals("2")){
System.out.println("请输入学生姓名:");
input=in.nextLine();
t.insert(input);
}else if(input.equals("1")){
t.select();
}else if(input.equals("3")){
this.findStu();
System.out.println("请输入要修改的学生姓名:");
String oldName=in.nextLine();
System.out.println("请输入新的学生姓名:");
String newName=in.nextLine();
t.update(newName,oldName);
}else if(input.equals("4")){
System.out.println("请输入要删除的学生姓名:");
String name=in.nextLine();
t.delete(name);
}else if(input.equals("5")){
int courseid=1;
float grade=0;
System.out.println("下面是学生信息:");
this.findStu();
System.out.println("请输入学生ID: ");
int stuid=in.nextInt();
System.out.println("请输入语文成绩:");
courseid=1;
grade=in.nextFloat();
this.insertGrade(stuid, courseid, grade);
System.out.println("请输入数学成绩:");
courseid=2;
grade=in.nextFloat();
this.insertGrade(stuid, courseid, grade);
}
}
in.close();
}

public void insert(String name) throws Exception{
jdbcMySQL.insertdate(name);
}

public void select() throws Exception{
jdbcMySQL.findStuInfo();
}

public void update(String newName,String oldName) throws Exception{
jdbcMySQL.updateStuInfo(newName, oldName);
}

public void delete(String name) throws ClassNotFoundException, SQLException{
jdbcMySQL.deleteStuInfo(name);
}

public void findStu() throws ClassNotFoundException, SQLException{
jdbcMySQL.findStu();
}
public void findCourse() throws ClassNotFoundException, SQLException{
jdbcMySQL.findCourse();
}
public void insertGrade(int stuid,int courseid,float grade) throws ClassNotFoundException, SQLException{
jdbcMySQL.insertGrade(stuid, courseid, grade);
}

}


Test.java文件: 


package dao;


public class Test {

public static void main(String[] args) throws Exception {
Display d=new Display();
d.display();
}

}


© 著作权归作者所有

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
Spring之jdbc Template实现CRUD操作

Spring为各种持久化技术都提供了简单操作的模板回调。比如jdbc、hibernate、Mybatis以及JPA等。 这里我们就以JDBC为例,看看JDBC template怎么实现CRUD操作。 JdbcTemplate主要提供以下几类方...

Java攻城玩家 ⋅ 05/31 ⋅ 0

基于 Java 的 CMS 解决方案 - tjpcms

官网:http://www.tjpcms.com tjpcms 是一套基于 Java 的 CMS 解决方案,开源免费。其独有的实时配置增删改查的功能,是其区别于同类 cms 的最大特点,也是最大优势,极大减少了重复劳动。懂...

金盆洗手 ⋅ 2017/01/12 ⋅ 6

Hibernate通过createSQLQuery( )方法实现增删改查

Hibernate通过createSQLQuery( )方法实现增删改查 Hibernate的三种实现方式之一:createSQLQuery( ) 一、项目结构 二、hibernate核心配置文件: hibernate.cfg.xml [java] view plain copy...

代金券优惠 ⋅ 04/16 ⋅ 0

学Java方向的学生实习工作好找吗?

我是这个大三的学生,是学Java方向的,我想知道,实习的工作好找吗?应该会什么?目前会SE、EE,数据库MySQL、 sqlserver。sql语句也会,C语言,c++也会一点。可以用框架做增删改查。这样够了...

明哥聊求职 ⋅ 05/26 ⋅ 0

MyBatis3-代码生成工具的使用

以下内容引用自http://www.yihaomen.com/article/java/331.htm: MyBatis应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量,所以MyBat...

easonjim ⋅ 2017/06/21 ⋅ 0

JDBC 轻量级封装的持久化工具包 - openhandx real

OpenHandX-Real是一个小巧的JDBC轻量级封装的持久化工具包,其核心的特性是查询结果集、以及增、删、改、按主键查询的封装。可以直接将查询出来的结果集封装成JavaBean,维护表数据时自动匹配...

辛巴8 ⋅ 04/17 ⋅ 0

DaiZhiYi/Ffast-FE

Ffast-FE 基于vue iview后台管理系统前端快速开发解决方案 Build Setup # install dependenciesnpm install or yarn # serve with hot reload at localhost:8000npm run dev # build for pro......

DaiZhiYi ⋅ 06/08 ⋅ 0

SpringBoot+Mybatis+MySql学习

介绍一下SpringBoot整合mybatis,数据库选用的是mysql。 首先创建数据库 建表以及插入初始数据(sql是从navicat中导出的) 下图为项目目录结构, java--- controller包负责测试整合 dao包作为数...

dalaoyang ⋅ 04/07 ⋅ 0

数据库中间件01-认识mycat

简述 Mycat是国产的一套免费开源的分布式数据库中间件。想必做开发或者运维的朋友对中间件这个词应该是比较熟悉了,我们见到过java中间件,消息中间件等等,这里又来了一个数据库中间件。那么...

细节探索者 ⋅ 05/11 ⋅ 0

Confluence 6 配置一个数据源连接

这个指南指导你如何配置使用 JNDI 数据源来连接到你的数据库。使用这个类型的连接,Confluence 将会询问应用服务器(Tomcat)中你配置的连接信息。 如果你希望使用 JDBC 的数据库连接方式,请...

honeymose ⋅ 06/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 18分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 18分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 20分钟前 ⋅ 0

分布式锁

1.通过数据库实现 http://www.weizijun.cn/2016/03/17/%E8%81%8A%E4%B8%80%E8%81%8A%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E7%9A%84%E8%AE%BE%E8%AE%A1/ 2.ZK实现:curator-recipes分布式锁的......

素雷 ⋅ 28分钟前 ⋅ 0

Sublime Text3 快捷键

选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名...

AndyZhouX ⋅ 35分钟前 ⋅ 0

XamarinAndroid组件教程RecylerView自定义适配器动画

XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画。此时,需要让自定义的动画继承Animation...

大学霸 ⋅ 35分钟前 ⋅ 0

eureka 基础(二)

使用Eureka服务器进行身份验证 如果其中一个eureka.client.serviceUrl.defaultZone网址中包含一个凭据(如http://user:password@localhost:8761/eureka)),HTTP基本身份验证将自动添加到您...

明理萝 ⋅ 38分钟前 ⋅ 1

Kubernetes(五) - Service

Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberne...

喵了_个咪 ⋅ 38分钟前 ⋅ 0

更新队友POM文件后报错

打开报错的地方的pom及其引用方法所在文件的pom,观察其版本号是否一致,不一致进行更改

森火 ⋅ 51分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 57分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部