JDBC数据连接之增删改查MVC
每天叫醒自己的不是闹钟,而是梦想
conn层
package conn; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException; import com.mysql.jdbc.Statement; public class Conn {
/*Statement stmt;
* 该对象用于执行静态SQL语句并返回它产生的结果。 默认情况下,只有一个ResultSet对象每Statement对象可以同时打开。因此,如果一个ResultSet对象的阅读是交错的另一个阅读,每个人都必须有不同的Statement对象产生。在Statement接口的所有执行方法隐式关闭的声明,目前ResultSet对象如果打开一个存在。
简单来说,就是一个结果对应一个Statement
本次实现增删改查。需要4个返回结果,所以定义4个Statement对象
*/
Statement stmt;
Statement stmt1;
Statement stmt2;
Statement stmt3; public Conn() //本段代码块构造函数,初始化连接数据库
{
try {
Class.forName("com.mysql.jdbc.Driver");//加载jdbc驱动
String url = "jdbc:mysql://localhost:3306/test?user=root&password=password&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false";
Connection con=DriverManager.getConnection(url);//连接数据库
stmt =(Statement) con.createStatement();
stmt1 =(Statement) con.createStatement();
stmt2 =(Statement) con.createStatement();
stmt3 =(Statement) con.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public boolean insert(String sql) //插入。Statement对象调用executeupdate方法执行sql语句。 成功与否返回布尔型。
{
boolean flag=true; //flag标识
try {
stmt.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag=false;//捕获到异常。执行失败。返回false;
}
return flag;
}
public boolean update(String sql)
{
boolean flag=true;
try {
stmt1.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag=false;
}
return flag;
}
public boolean delect(String sql)
{
boolean flag=true;
try {
stmt2.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag=false;
}
return flag;
}
public ResultSet select(String sql) throws Exception
{ return stmt3.executeQuery(sql); }
}
dao层
package dao; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import com.mysql.jdbc.ResultSetImpl; import bean.Student;
import conn.Conn;
/*本类中拼接sql语句 本类为实现接口方法
* 用于用户调用
* 传入conn连接数据库类
* 节后的实现后缀用impl
*
* */
public class StudentDao implements IStudentDao {
Conn conn=new Conn();
@Override
public boolean insertStudent(Student student) {
// TODO Auto-generated method stub
String name=student.getName();
int age=student.getAge();
int sex=student.getSex();
String sql = "INSERT INTO student(`name`,`age`,`sex`) VALUES('"+name+"',"+age+","+sex+");"; return conn.insert(sql);
} @Override
public boolean updateStudent(Student student) {
int id=student.getId();
String name=student.getName();
int age=student.getAge();
int sex=student.getSex();
String sql = "UPDATE student set `name`='"+name+"',age="+age+",sex="+sex+" WHERE id="+id+"";
// String sql = "UPDATE student SET `name`='"+name+"'"+",age="+age+",sex="+sex+" WHERE id="+id;
return conn.update(sql);
} @Override
public boolean delectStudent(Student student) {
// TODO Auto-generated method stub
int id=student.getId();
String sql = "DELETE FROM student where id="+id;
return conn.delect(sql);
} @Override
public ArrayList<Student> selectStudent() {
// TODO Auto-generated method stub
String sql="select *from student;";
ResultSet set=null;
ArrayList<Student> list=new ArrayList<>();
try {
set=conn.select(sql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
while(set.next())
{
Student student=new Student();
student.setId(set.getInt("id"));
student.setName(set.getString("name"));
student.setAge(set.getInt("age"));
student.setSex(set.getInt("sex"));
list.add(student);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
} }
package dao;
import java.util.ArrayList;
import bean.Student;
public interface IStudentDao {
/*本接口写方法。用于其他类继承调用
* 使用其他包类是。需要先导入
* 查询结果返回数组
* 接口
*
* */
public boolean insertStudent(Student student);
public boolean updateStudent(Student student);
public boolean delectStudent(Student student);
public ArrayList<Student> selectStudent();
}
server
package server;
import java.util.ArrayList;
import bean.Student;
public interface IStudentServer {
public boolean insertStudent(Student student);
public boolean deleteStudent(Student student);
public boolean updateStudent(Student student);
public ArrayList<Student> selectAllStudent();
}
package serverImpl; import java.util.ArrayList; import bean.Student;
import dao.StudentDao;
import server.IStudentServer; public class ServerStudent implements IStudentServer{
StudentDao studentDao= new StudentDao(); @Override
public boolean insertStudent(Student student) {
// TODO Auto-generated method stub
return studentDao.insertStudent(student);
} @Override
public boolean deleteStudent(Student student) {
// TODO Auto-generated method stub
return studentDao.delectStudent(student);
} @Override
public boolean updateStudent(Student student) {
// TODO Auto-generated method stub
return studentDao.updateStudent(student);
} @Override
public ArrayList<Student> selectAllStudent() {
// TODO Auto-generated method stub
return studentDao.selectStudent();
} }
action
package action; import java.util.ArrayList; import bean.Student;
import serverImpl.ServerStudent; public class StudentAction {
ServerStudent serverStudent =new ServerStudent();
public String insertStudent(Student student)
{
boolean flag=serverStudent.insertStudent(student);
if(flag==true)
return "插入成功";
else
return "插入失败";
}
public String delectStudent(Student student)
{ boolean flag=serverStudent.deleteStudent(student);
if(flag==true)
return "刪除成功";
else
return "刪除失败";
}
public String updateStudent(Student student)
{ boolean flag=serverStudent.updateStudent(student);
if(flag==true)
return "修改成功";
else
return "修改失败";
}
public String selectStudent()
{
ArrayList<Student> student=serverStudent.selectAllStudent();
String ss = "";
for(Student chaoba:student) {
ss += "id:"+chaoba.getId();
ss += " name:"+chaoba.getName();
ss += " age:" + chaoba.getAge();
ss += " sex:" + (chaoba.getSex()==1?"男":"女");
ss += "\r\n";
}
return ss;
}
}
bean 业务实体
package bean;
/*Student类。用做业务实体,
* 进行复制。传递获取
*
*
*
*
* */
public class Student {
private int id;
private String name;
private int age;
private int sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
} }
*-------------------------------------------*
By:暮雪超霸博客:http://www.cnblogs.com/chaoba/
*-------------------------------------------*
JDBC数据连接之增删改查MVC的更多相关文章
- 通过JDBC进行简单的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- 通过JDBC进行简单的增删改查(以MySQL为例) 目录
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- Java通过JDBC进行简单的增删改查(以MySQL为例)
Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...
- C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查
前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...
- AngularJS中使用$http对MongoLab数据表进行增删改查
本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load ...
- Mysql数据表的增删改查
---恢复内容开始--- Mysql数据表的增删改查 1.创建表 语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...
- jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)
jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...
- MySQL数据分析(16)— 数据操作之增删改查
前面我们说学习MySQL要从三个层面,四大逻辑来学,三个层面就是库层面,表层面和数据层面对吧,数据库里放数据表,表里放数据是吧,大家可以回忆PPT中jacky的这图,我们已经学完了库层面和表层面,从本 ...
- Redis简单的数据操作(增删改查)
#Redis简单的数据操作(增删改查): 字符串类型 string 1. 存储: set key value 127.0.0.1:6379> set username zhangsan OK 2 ...
随机推荐
- NOIP 2020 退役记
躲进你的身体. 哈哈 没想到这么快就轮到我退役啦 以前想想还感觉挺遥远的 这是我最后的机会啦! day-1 晚上照例吃了断头饭 但是没有蛋糕/kk 恭喜 Luckyblock 逃过一劫! (照照片的时 ...
- 树莓CM3开机连接WIFI
两年没玩树莓派了,最近拿了一块CM3,发现启动后不能连接WIFI,网上的文章都是针对3B的,修改/etc/network/interfaces文件和/etc/wpa_supplicant/wpa_su ...
- C#数据结构-二叉树-顺序存储结构
什么是二叉树:每个树的节点只有两个子树的树形结构. 为什么使用顺序存储结构:使用数组存放满二叉树的各结点非常方便,可以根据一个结点的索引号很容易地推算出它的双亲.孩子.兄弟等结点的编号,从而对这些结点 ...
- 学JAVA的艰难之路
周五回家了,这两天也没有更新代码系列,很抱歉,之后会补上.今天刚到宿舍,写了会代码,想用一个数组的从键盘输入,再也弄不好了,最终在我不断的翻之前写的代码,终于是找到了一个例子,真的不容易,编程这东西, ...
- PyQt(Python+Qt)学习随笔:model/view架构中的两个标准模型QStandardItemModel和QFileSystemModel
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.PyQt中的标准模型 PyQt和Qt提供了两个标准模型QStandardItemModel和QF ...
- Python学习随笔:使用xlwings读取和操作Execl文件
一.背景 有2种模块可以对Execl文件,一种是xlwt 方式,需要安装三个库文件 xlrd(读Excel)xlwt(写Excel)xlutils(修改Excel),也是网上介绍文章最多的一种方法,一 ...
- secret_key伪造session来进行越权
从swpuctf里面的一道ctf题目来讲解secret_key伪造session来进行越权. 以前没有遇到过这种题目,这次遇到了之后查了一些资料把它做了出来,记录一下知识点. 参考资料 http:// ...
- jenkins+git部署环境,出现Failed to connect to repository : Command "git ls-remote -h http://gitlab.xxxxx.git HEAD" returned status code 128stdout: stderr: fatal: repository 'http://gitlab.xxxxx.git' not fou
1.部署jenkins+git源码管理的方式,源码管理报128stdout 源码管理出现如下错误: Failed to connect to repository : Command "gi ...
- Linux下安装视频转换工具ffmpeg
ffmpeg下载地址:http://ffmpeg.org/releases/ 1.首先需要安装解码器集合(包含安装ffmpeg用到的所有解码器)下载地址: 链接:https://pan.baidu.c ...
- 【学习笔记】最小直径生成树(MDST)
简介 无向图中某一点(可以在顶点上或边上),这个点到所有点的最短距离的最大值最小,那么这个点就是 图的绝对中心. 无向图所有生成树中,直径最小的一个,被称为 最小直径生成树. 图的绝对中心的求法 下文 ...