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. 数据仓库3级范式(3NF)基础

    一.引言 最近在整理理大数据模式下的数据仓库数据模型,资料来自互联网和读过的数据仓库理论和实践相关. 二.3NF (1)1NF-无重复的列 数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个 ...

  2. win7下用U盘装ubuntu双系统 安装完后进入ubuntu黑屏光标问题

    背景:原有win7系统,电脑中有ssd固态硬盘和电脑自带硬盘,win7是装在ssd盘上的 U盘安装ubuntu:已有之前保存的ubunbu镜像文件.iso U盘一块至少1G(我的是4G),将U盘资料备 ...

  3. 图片上传是否为空,以及类型的js验证

    function check2() { var file = document.getElementsByName("file").value; if(file=="&q ...

  4. 【BZOJ2253】纸箱堆叠 [CDQ分治]

    纸箱堆叠 Time Limit: 30 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description P 工厂是一个生产纸箱的工厂. 纸 ...

  5. Linux emacs考场配置及对拍脚本

    emacs配置(待补) (global-set-key [f9] 'compile) (global-set-key [f10] 'gud-gdb) (global-set-ket (kbd &quo ...

  6. HTML5之FileReader的简易使用

    用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据.FileReader接口提供了读取文件的方法 ...

  7. 转:在android中button响应的两种方式

    1. 在布局文件中添加button的监听名字 Android:onClick="buttonOnClick" 例如: <Button android:id="@+i ...

  8. [ Centos 7 iscsi搭建 及 1台客户端同时挂载多台iscsi服务端问题 ]

    一.什么是iscsi iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千 ...

  9. 【C++】多重继承

    1. 多重继承时的二义性 当使用多重继承时,如果多个父类都定义了相同名字的变量,则会出现二义性.解决方法:使用 :: 声明作用域 #include <iostream> using nam ...

  10. Eclipse SVN还原文件到历史版本详解

    由于某些特殊原因,我们可能需要将SVN资源库中的某个文件回滚到以前的某个历史版本(准确地说,这不是"回滚","回滚"操作会导致指定版本到当前版本的变更记录丢失, ...