文档章节

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

指尖残雪
 指尖残雪
发布于 2016/05/22 23:57
字数 1352
阅读 22
收藏 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();
}

}


本文转载自:http://blog.csdn.net/bq1073100909/article/details/34117257

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

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

Java攻城玩家
05/31
0
0
mybaties的批量增删改查及普通增删改查

数据库: create table school( id int(11) not null auto_increment comment '主键', name varchar(20) comment '学校名称', address varchar(100) comment '学校地址', create_time datati......

成长中的菜鸟
2015/01/29
0
0
通过Shell脚本用JDBC连数据库脱离项目框架执行Java业务流程

一.概述 如果项目中需要使用到定时任务来完成某些业务,一般有两种做法:定时任务依赖于项目;定时任务用批处理(windows执行)或者shell脚本(Linux)启动,不依赖于项目。 个人觉得,定时任...

谢思华
2015/08/10
0
0
基于 Java 的 CMS 解决方案 - tjpcms

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

金盆洗手
2017/01/12
0
6
Servlet练习:实现增删改查的综合练习

本文为原创,转载请注明出处:https://www.cnblogs.com/Tom-shushu/p/9383066.html 本篇内容主要介绍:通过Servlet,JSP,Bootstrap框架以及MySQL等知识实现一个简单地对数据库信息进行:增,...

Tom-shushu
07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部