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; /** * 学生类 * ...
随机推荐
- 《TCP/IP详解卷一:协议》 概述
分层 TCP/IP协议族是一组不同层次上的多个协议的组合.TCP/IP通常被认为是一个四层次协议系统. 链路层(数据链路层或网络接口层):通常包括操作系统中的设备驱动程序和计算 ...
- HDU1875(最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- POJ3259(ford判环)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 39078 Accepted: 14369 Descr ...
- selectedIndex 属性可设置或返回下拉列表中被选选项的索引号。
转自:https://blog.csdn.net/xxj19950917/article/details/73002046
- android学习点滴一:android环境的搭建
东一点西一点,很多时间都浪费了.是该系统性的做好自己的东西了. <android学习点滴一:android环境的搭建> [环境变量]变量名:JAVA_HOME变量值:C:\Java\jdk ...
- dede问答汉字变星号
在ask模块里面,question.php中,发现了2行代码 $data['title'] = preg_replace("#{$GLOBALS['cfg_replacestr']}#&qu ...
- solr-建立单机版的服务器
回到之前打开的页面,刷新,wenda就出来了: 这个wenda是单机版的.
- ARP欺骗(完全版)
在讲ARP欺骗之前先讲讲什么是ARP以及ARP欺骗的原理吧. 一. 什么是ARP? arp英文全称: address resolution protocol 中文:地址解析协议 它的作用:是根 ...
- UVaLive 3530 Martian Mining (简单DP)
题意:给定一个n*m的网格,每个格子里有A矿和B矿数量,A必须由右向左运,B只能从下向上运,中间不能间断,问最大总数量. 析:一个简单DP,dp[i][j] 表示 从 (0, 0) 到 (i, j) ...
- string实现
#include<iostream> using namespace std; class String{ friend ostream& operator<&l ...