jdbc:

package org.java.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; /**
* 里面编写了所有的关于数据库操作的方法
* 具有通用性的增删改查方法
*/
public class BaseDao {
//驱动字符串
private String className = "com.mysql.jdbc.Driver";
//连接字符串
private String url = "jdbc:mysql://localhost:3306/syspet";
//用户名
private String user = "root";
//密码
private String password = "root";
/*jdbc接口*/
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
/**
* 创建连接
* @return 连接对象
*/
public Connection getConnection(){
try {
//加载mysql驱动
Class.forName(className);
//通过DriverManager来管理mysql驱动,创建与数据库的连接
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 增删改的方法
* @param sql 预编译的sql(有问号的占位符)
* @param params 因为参数的类型不确定所以用Object,个数不确定所以用的数组
*/
public void update(String sql,Object[] params){
//1.创建连接
conn = this.getConnection();
try {
//2.创建预编译声明对象
ps = conn.prepareStatement(sql);
//将参数数组放入到预编译的sql语句中
if(params != null){
//3.表示有参数,遍历数组
for(int i = 0; i < params.length; i++){
//4.将参数数组放入到预编译sql语句中
ps.setObject(i + 1, params[i]);
}
}
//5.执行sql语句
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//操作完成后关闭资源
this.close(conn, ps, rs);
}
}
/**
* 查询
* @param sql 预编译的sql语句
* @param params 参数数组
* @return 结果集
*/
public ResultSet getResultSet(String sql,Object[] params){
//1.创建连接
conn = this.getConnection();
try {
//2.创建预编译声明对象,准备做查询
ps = conn.prepareStatement(sql);
//判断是否有参数
if(params != null){
//3.遍历参数数组
for(int i = 0; i < params.length; i++){
ps.setObject(i + 1, params[i]);
}
}
//4.执行查询得到结果集
rs = ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//查询的时候现在还不能关闭(这个时候一定不能关闭资源)
return rs;
}
/**
*关闭资源
*/
public void close(Connection conn,PreparedStatement ps,ResultSet rs){
try {
if(rs != null){
rs.close();
rs = null;
}
if(ps != null){
ps.close();
ps = null;
}
if(conn != null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

实体类:

package org.java.entity;
/**
* 实体层(对数据库中实体对象的封装)
*/
public class Bank {
private Integer id; //编号
private String name; //姓名
private Integer blance; //余额
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getBlance() {
return blance;
}
public void setBlance(Integer blance) {
this.blance = blance;
}
}

dao层:

package org.java.dao;

import java.util.List;

import org.java.entity.Bank;

/**
* 接口中的所有方法都默认是用public abstract修饰
*/
public interface BankDao {
/**
* 往数据库中添加一个对象
* @param bank bank对象
*/
void add(Bank bank);
/**
* 修改一个bank对象
* @param bank
*/
public abstract void update(Bank bank);
/**
* 删除
* @param id
*/
public void delete(Integer id);
/**
* 查询所有的
* @return
*/
abstract List<Bank> getAllBank();
}

dao实现层:

package org.java.dao.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import org.java.dao.BankDao;
import org.java.dao.BaseDao;
import org.java.entity.Bank; public class BankDaoImpl extends BaseDao implements BankDao { @Override
public void add(Bank bank) {
String sql = "INSERT INTO bank(NAME,blance) VALUES(?,?)";
Object[] params = {bank.getName(),bank.getBlance()};
super.executeUpdate(sql, params);
} @Override
public void update(Bank bank) {
String sql = "UPDATE bank SET blance=? WHERE NAME=?";
Object[] params = {bank.getBlance(),bank.getName()};
super.executeUpdate(sql, params);
} @Override
public void delete(Integer id) {
String sql = "DELETE FROM bank WHERE id=?";
Object[] params = {id};
super.executeUpdate(sql, params);
} @Override
public List<Bank> getAllBank() {
List<Bank> list = new ArrayList<Bank>();
String sql = "SELECT * FROM bank";
Object[] params = null;
super.rs = super.getResultSet(sql, params);
//遍历结果集
try {
while(rs.next()){
//将结果集封装到bank对象中
Bank bank = new Bank();
bank.setId(rs.getInt(1));
bank.setName(rs.getString(2));
bank.setBlance(rs.getInt(3));
//将对象放入到集合中
list.add(bank);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭数据库资源
super.close(conn, ps, rs);
} return list;
} }

。。。service层暂时忽略


测试:

package org.java.test;

import java.util.List;
import java.util.Scanner; import org.java.dao.BankDao;
import org.java.dao.impl.BankDaoImpl;
import org.java.entity.Bank;
import org.junit.Test; public class BankTest {
BankDao bankDao = new BankDaoImpl();
@Test
public void testAdd(){
Scanner input = new Scanner(System.in);
//创建要添加的bank对象
Bank bank = new Bank();
System.out.println("请输入账户姓名:");
bank.setName(input.next());
System.out.println("请输入账户余额:");
bank.setBlance(input.nextInt());
//添加到数据库中
bankDao.add(bank);
} @Test
public void testupdate(){
Scanner input = new Scanner(System.in);
//创建要添加的bank对象
Bank bank = new Bank();
System.out.println("请输入账户姓名:");
bank.setName(input.next());
System.out.println("请输入账户余额:");
bank.setBlance(input.nextInt());
//添加到数据库中
bankDao.update(bank);
} @Test
public void testselect(){
List<Bank> list = bankDao.getAllBank();
for (Bank bank : list) {
System.out.println(bank.getId() + "\t" + bank.getName() + "\t" + bank.getBlance());
}
}
}

JDBC 操作数据库的更多相关文章

  1. 用于JDBC操作数据库的公共类

    /* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...

  2. JDBC操作数据库的学习(2)

    在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...

  3. JDBC操作数据库的学习(1)

    单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...

  4. JDBC操作数据库的三种方式比较

    JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...

  5. Spark Streaming通过JDBC操作数据库

    本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...

  6. JDBC操作数据库的基本步骤:

    JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...

  7. springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务

    springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...

  8. Spring入门(十五):使用Spring JDBC操作数据库

    在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...

  9. Java笔记(第七篇 JDBC操作数据库)

    JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...

  10. JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

随机推荐

  1. 如何在plsql/developer的命令窗口执行sql脚本

    在plsql/developer的命令窗口执行sql脚本的命令是@+路径 示例如下: 第一步:在C:\Users\linsenq\Desktop目录下新建一个脚本文件: test.sql test.s ...

  2. oralce的客户端sqlplus

    安装完oracle后,默认的客户端是sqlplus,还有一个公司常用的是PLSQLdeveloper 客户端软件,另外Navicat primie这个可以连接mysql.sqlserver.oracl ...

  3. There is an overlap in the region chain修复

    ERROR: (region day_hotstatic,860010-2355010000_20140417_12_entry_00000000321,1400060700465.fda3b0aca ...

  4. C++构造函数重载以及默认参数引起的二义性

    大家都知道当我们声明一个类时,系统会提供一个默认构造函数.当我们需要提供参数进行对类数据成员进行初始化时,就需要对类的带参构造函数进行重载.同时,如果我们需要调用默认构造函数进行类数据成员的初始化时, ...

  5. input 单选按钮radio 取消选中(转载)

    input单选按钮: 在radio按钮中添加属性tag  0代表未被选中 HTML代码: <input name="rdo1" value="AA" ty ...

  6. 基于MapReduce的手机流量统计分析

    1,代码 package mr; import java.io.IOException; import org.apache.commons.lang.StringUtils; import org. ...

  7. 使用FindBugs-IDEA插件找到代码中潜在的问题

    另一篇使用文档,参照:https://www.cnblogs.com/huaxingtianxia/p/6703315.html 我们通常都会在APP上线之后,发现各种错误,尤其是空指针异常,这些错误 ...

  8. windows启动redis服务

    参考:https://www.cnblogs.com/M-LittleBird/p/5902850.html 使用python的pip install redis以后还需要下载安装redis安装文件才 ...

  9. Tarjan 联通图 Kuangbin 带你飞 联通图题目及部分联通图题目

    Tarjan算法就不说了 想学看这 https://www.byvoid.com/blog/scc-tarjan/ https://www.byvoid.com/blog/biconnect/ 下面是 ...

  10. UVA 10668 Expanding Rods

    Problem A: Expanding Rods When a thin rod of length L is heated n degrees, it expands to a new lengt ...