底层代码:

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. Redux API之Store

    Store Store 就是用来维持应用所有的 state 树 的一个对象. 改变 store 内 state 的惟一途径是对它 dispatch 一个action. Store 不是类.它只是有几个 ...

  2. WSAStartup()函数的使用

    int WSAStartup( __in WORD wVersionRequested, __out LPWSADATA lpWSAData ); WSAStartup 格  式: int PASCA ...

  3. 数据库路由中间件MyCat - 源代码篇(13)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 4.配置模块 4.2 schema.xml 接上一篇,接下来载入每个schema的配置(也就是每个MyCat ...

  4. 转载-【深度学习】深入理解Batch Normalization批标准化

      全文转载于郭耀华-[深度学习]深入理解Batch Normalization批标准化:   文章链接Batch Normalization: Accelerating Deep Network T ...

  5. Android Studio如何导出可供Unity使用的aar插件详解

    http://www.cnblogs.com/xtqqkss/p/6387271.html 前言 项目之前使用Eclipse导出的jar文件来做与Android交互,最近因为工作需要需使用Androi ...

  6. 洛谷P1220 关路灯(区间dp)

    关路灯 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯.为了给村里节 ...

  7. js组件化(转载)

    今天想着开始封装自己的UI库和组件库,从网上看到一篇很好的关于js组件化的文章,现在分享一下. 转载地址:https://blog.csdn.net/Prince_fmx/article/detail ...

  8. 初识java线程(Thread)

    <1>.概念问题 线程的状态:1.NEW : 没有start的线程 2.RUNNING :可运行线程,可能正在执行,也可能正在等待操作系统中的其他资源,比如cpu时间片 3.BlOCKED ...

  9. 我的省选 Day -15

    Day  -15 23:22:45 还有十几天就要去参加省选啦~,今天开始写日记记录一下,所以今天是第负十五天. 今天是阶段考的第二天(由于奥赛不用考试的我7:30才慢悠悠地到机房 早上学习动态DP, ...

  10. 通过T4模板解决EF模型序列号的循环引用问题

    在模型的T4模板(如model.tt)中插入如下代码,这样由模板生成的模型代码中的导航属性将自动带有[JsonIgnore]标识,不会被序列化 1. 添加命名空间的引用 找到以下代码,添加using ...