底层代码:

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. valgrind 代码检查,内存泄漏

    使用平台 linux 下载 http://valgrind.org/ 文档 http://valgrind.org/docs/manual/manual.html 博客 https://www.osc ...

  2. JSP介绍(2)--- 九大隐式对象

    request对象 每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求. request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等 ...

  3. DataTable批量插入数据库

    最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.upda ...

  4. AAAAAA

    有可能被立案调查.暂停上市.退市风险警示*ST.特别处理ST的公司:银鸽投资(SH:600069).天山生物(SZ:300313).金贵银业(SZ:002716).美盛文化(SZ:002699).未名 ...

  5. TCP 连接的握手信息详解

    建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...

  6. poi 导出excel 生成等比例图片

    poi 导出的带等比例图片方法 /** * * <p>Description: 将一物一码列表导出到excel</p> * @param response * @param l ...

  7. Adding In-App Purchase to your iOS and OS X Applications

    Adding In-App Purchase to your iOS and OS X Applications In-App Purchase allows you to sell addition ...

  8. eclipse里的Maven插件安装

    插件安装 打开Eclipse的Help->Install New Software,如下图所示: 2. 选择“Add..”按钮,又会弹出如下对话框: 这个对话框就是用于添加一个插件地址的.在“N ...

  9. python 2 与python 3 区别

    print def print(self, *args, sep=' ', end='\n', file=None): # known special case of print "&quo ...

  10. MD5 不可逆加密,Des对称可逆加密 ,RSA非对称可逆加密 ,数字证书 SSL

    :MD5 不可逆加密2:Des对称可逆加密3:RSA非对称可逆加密4:数字证书 SSL Anker_张(博客园)http://www.cnblogs.com/AnkerZhang/ 1:MD5 不可逆 ...