底层代码:

package com.zdsoft;

import java.sql.*;

/**
* Created by lx on 2017/6/22.
*/
public class JDBCUtil {
private static JDBCUtil jdbcUtil;
//驱动路径
private static String DRIVER="com.mysql.jdbc.Driver";
//数据库的连接路径
private static String URL="jdbc:mysql://localhost:3306/test";
//用户名
private static String userName="root";
//密码
private static String passWord="123456";
private Connection connection;
private PreparedStatement statement;
ResultSet resultSet;
/**
* 加载驱动*/
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 私有化构造器*/
private JDBCUtil(){ }
/**
* 双重检索单例*/
public static JDBCUtil getInstance(){
if (jdbcUtil==null){
synchronized (JDBCUtil.class){
if (jdbcUtil==null){
jdbcUtil=new JDBCUtil();
}
}
}
return jdbcUtil;
} /**
* 用来做增删改操作的方法
* @param sql String类型sql语句
* @param args Object类型可变长度参数
* @return int 类型等于-1添加失败,大于0 添加成功
*/
public int update(String sql ,Object...args){
int count=-1;
//打开数据库连接
getConnection();
try {
//创建预加载对象
statement=connection.prepareStatement(sql);
if (args!=null){
for (int i=0;i<args.length;i++){
statement.setObject(i+1,args[i]);
}
}
//执行sql语句
count=statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
cloes();
return count;
}
cloes();
return count;
} /**
* 查询通用操作方法
* @param sql String 类型 本次操作的sql语句
* @param args Object 类型 可变长度的参数
* @return 返回resultset 类型 结果集 如出现异常则返回 null
*/
public ResultSet query(String sql,Object...args){
//打开连接
getConnection();
try {
//创建sql操作对象
statement=connection.prepareStatement(sql);
if (args!=null){
for (int i=0;i<args.length;i++){
//给占位符赋值
statement.setObject(i+1,args[i]);
}
//执行sql语句
resultSet= statement.executeQuery();
}
} catch (SQLException e) {
e.printStackTrace();
cloes();
return null;
}
return resultSet;
}
/**
* 打开连接的方法*/
public void getConnection(){
try {
connection=DriverManager.getConnection(URL,userName,passWord);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void cloes(){
if (resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
}

业务逻辑层

 package com.zdsoft;

 import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by lx on 2017/6/22.
*/
public class StudentService {
/**
*
* @param stu_code 学号
* @param stu_name 姓名
* @param stu_sex 年龄
* @param birthday 生日
* @param classid 班级编号
* @return int 类型等于-1添加失败,大于0 添加成功
*/
public int addStudent(int stu_code,String stu_name,String stu_sex,String birthday,int classid){
String sql="insert into student(stu_code,stu_name,stu_sex,birthday,stu_calssid) values(?,?,?,?,?)";
return JDBCUtil.getInstance().update(sql,stu_code,stu_name,stu_sex,birthday,classid);
} /**
*根据姓名查询信息的方法
* @param name 姓名
* @return ArrayList 类型 结果集 如出现异常则返回 null
*/ public List<Map> getStuInfo(String name){
List<Map> list=new ArrayList<Map>();
ResultSet set=null;
//创建sql语句
String sql="select * from student where stu_name=?";
set=JDBCUtil.getInstance().query(sql,name);
return resultPull(set);
}
/**
* 负责解析任何结果的方法*/
private List<Map> resultPull(ResultSet resultSet){
//利用结果集获取resultMateData的实例
List<Map> list=new ArrayList<Map>();
Map hashMap;
try {
ResultSetMetaData metaData=resultSet.getMetaData();
//获取要解析的数据总共有多少列
int count=metaData.getColumnCount();
while (resultSet.next()){
hashMap=new HashMap();
for (int i=1;i<=count;i++){
hashMap.put(metaData.getColumnName(i),resultSet.getObject(i));
}
list.add(hashMap);
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
return list;
} }

StudentService.java

查询层:

package com.zdsoft;

import javax.xml.parsers.DocumentBuilderFactory;
import java.sql.*;
import java.util.List;
import java.util.Map; /**
* Created by lx on 2017/6/22.
*/
public class DemoDB {
public static void main(String[] args) {
StudentService studentService=new StudentService();
List<Map> list=studentService.getStuInfo("刘德华");
}
}

测试:

package com.zdsoft;

/**
* Created by lx on 2017/6/23.
*/
public class Test {
public static void main(String[] args) { }
}

Java连接数据库,增删改查的更多相关文章

  1. java连接数据库增删改查公共方法

    package dao; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connecti ...

  2. JAVA JDBC 增删改查简单例子

    1.数据库配置文件jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username= ...

  3. java中增删改查(CRUD)总结

    对于User表增删改查:1:save(保存方法)  view(查询所有记录) update(更新方法) delete(删除方法) 通过method这个参数进行判断执行不同的操作 2: 具体的实现:   ...

  4. Java MVC 增删改查 实例

    需求:实现增加新部门的功能,对应数据库表示Oracle的dept表 一.Java MVC 增 实现: 1.视图层(V):注册部门 deptAdd.jsp 在注册新部门页面只需输入“部门名称”和“城市” ...

  5. eclipce连接数据库增删改查

    1.在mysql中新建一个名为course的数据库,并在其中新建一个course数据表,包含四个字段,id,name,teacher,classname如图(注意:将id设为自动递增,否则后面新增会出 ...

  6. jsp连接数据库增删改查

    一,创建表 二.将jar包复制导入到lib文件夹下 三.创建工具包连接数据库 package com.bill.util; import java.sql.Connection; import jav ...

  7. 基于mongodb的java之增删改查(CRUD)

    1,下载驱动https://github.com/mongodb/mongo-java-driver/downloads,导入工程java中 2,建立测试代码 import java.net.Unkn ...

  8. Java数据库增删改查

    数据库为MySQL数据库,Oracle数据库类似: create database db_test;--创建数据库 ';--创建用户 grant all privileges on db_test.* ...

  9. mongoDB用java实现增删改查

    package mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mo ...

  10. Java Map增删改查

    示例代码: 学生类 package com.imooc.collection; import java.util.HashSet; import java.util.Set; /** * 学生类 * ...

随机推荐

  1. CentOS下安装配置Samba服务器

    0 环境介绍 VMWARE12下安装的CENTOS7虚拟机.宿主机为WIN7. 1 离线安装 费了九牛二虎之力,下载各种依赖,还是有问题,转向在线安装. 2 在线安装 虚拟机采用默认的配置: 其次,网 ...

  2. sparse matrix format

    see Spare Matrix wikipedia item, and scipy's documentation on different choices of sparse matrix typ ...

  3. 《Java多线程编程核心技术》读后感(十六)

    线程组 线程组的作用是,可以批量的管理线程或线程组对象,有效地对线程或线程组对象进行组织 线程对象关联线程组:1级关联 package Seven; public class ThreadA exte ...

  4. wireshark里无网络接口解决办法

    管理员模式下开启npf服务,该服务能捕获网络接口,net start npf

  5. UVaLive 4254 Processor (二分+优先队列)

    题意:有n个任务,每个任务有三个参数,r,d,w,表示该任务必须在[r,d]之间执行,工作量是w,处理器执行速度可以变化,当执行速度是s的时候, 一个工作量是w的任务需要需要的执行时间是w/s个工作单 ...

  6. HeapCreate

    为进程创建新堆,请求分配虚拟内存分页,函数原型如下: HANDLE HeapCreate( DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximu ...

  7. ue4 修改3dui内容

    修改text内容1 修改text内容2 上面的方法是对外公开某个控件,然后再蓝图中直接改控件内容 另一种更好的方法时,在控件上新建public变量,控件绑定到这个变量上,由蓝图直接改变这个public ...

  8. 【Ionic+AngularJS 开发】之『个人日常管理』App(一)

      写在前面的话 过去一年自己接触了不少手机前端开发,得益于现在手机性能的提升和4G普及,感觉使用混合技术开发手机App已经可以满足越来越多的应用场景了.新年伊始,对自己2016年所学知识做一个阶段性 ...

  9. 基于testcontainers的现代化集成测试进阶之路

    大型的软件工程项目除了大量的产品级代码外必不可少的还有大量的自动化测试.自动化测试包含从前端到后端甚至到产品线上不同模块和环境的各种类型的测试.一个比较经典的关于自动化测试分布的理论就是测试金字塔,是 ...

  10. SpringMVC重定向传递参数

    在SpringMVC的一个controller中要把参数传到页面,只要配置视图解析器,把参数添加到Model中,在页面用el表达式就可以取到.但是,这样使用的是forward方式,浏览器的地址栏是不变 ...