Java连接数据库,增删改查
底层代码:
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连接数据库,增删改查的更多相关文章
- java连接数据库增删改查公共方法
package dao; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connecti ...
- JAVA JDBC 增删改查简单例子
1.数据库配置文件jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username= ...
- java中增删改查(CRUD)总结
对于User表增删改查:1:save(保存方法) view(查询所有记录) update(更新方法) delete(删除方法) 通过method这个参数进行判断执行不同的操作 2: 具体的实现: ...
- Java MVC 增删改查 实例
需求:实现增加新部门的功能,对应数据库表示Oracle的dept表 一.Java MVC 增 实现: 1.视图层(V):注册部门 deptAdd.jsp 在注册新部门页面只需输入“部门名称”和“城市” ...
- eclipce连接数据库增删改查
1.在mysql中新建一个名为course的数据库,并在其中新建一个course数据表,包含四个字段,id,name,teacher,classname如图(注意:将id设为自动递增,否则后面新增会出 ...
- jsp连接数据库增删改查
一,创建表 二.将jar包复制导入到lib文件夹下 三.创建工具包连接数据库 package com.bill.util; import java.sql.Connection; import jav ...
- 基于mongodb的java之增删改查(CRUD)
1,下载驱动https://github.com/mongodb/mongo-java-driver/downloads,导入工程java中 2,建立测试代码 import java.net.Unkn ...
- Java数据库增删改查
数据库为MySQL数据库,Oracle数据库类似: create database db_test;--创建数据库 ';--创建用户 grant all privileges on db_test.* ...
- mongoDB用java实现增删改查
package mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mo ...
- Java Map增删改查
示例代码: 学生类 package com.imooc.collection; import java.util.HashSet; import java.util.Set; /** * 学生类 * ...
随机推荐
- C# 序列化反序列化XML的帮助类
以下是一个包装的用于序列化反序列化XML和C# 对象的类. public class XmlSerializeHelper<T> { #region Serial ...
- cocos2dx unzip、createDir
转自:http://www.cnblogs.com/xioapingguo/p/4037323.html static unsigned long _maxUnzipBufSize = 0x50000 ...
- Unique Binary Search Trees-计算表示相同序列的不同BST个数
题目描述: 给定整数n,计算存储序列为1...n的结构唯一的BST的个数 题目来源: http://oj.leetcode.com/problems/unique-binary-search-tree ...
- [hdu4311]Meeting point-1
题意:在整数坐标轴上找一个距离所有给定点距离最小的点. 解题关键:对x和y分别处理,前缀和预处理所有点到最小点的距离,每点的$sum$等于左边的贡献+右边的贡献,最后取$min$即可. 复杂度:$O( ...
- skb详细解析【转】
skb详细解析[转] 摘自:http://blog.chinaunix.net/uid-30035229-id-4883992.html 在自己的模块发送函数中,需要对skb进行重新构造 ...
- CloseHandle()函数的使用
CloseHandle()函数的使用?? 很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHande ...
- SharePoint 2010 将带有工作流的模板移动到另一个站点集
HOWTO Move or Migrate SharePoint 2010 List-based Workflows between Sites and Site Collections I’ve e ...
- zoj 3640 Help Me Escape (概率dp 递归求期望)
题目链接 Help Me Escape Time Limit: 2 Seconds Memory Limit: 32768 KB Background If thou doest w ...
- MVC+Linq+EF笔记
using (DataContext ctx = new DataContext()) { /*foreach (var item in ctx.employees) { ViewData[" ...
- Mac安装python细节
前言 之前在windows平台上安装python直接用Anaconda,优点是所有的科学计算的库都整合进去了,安装方便.在Mac系统下,当然也可以直接安装Anaconda,但是考虑到Mac会自带pyt ...