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. WebOS系列-了解Wekbit【邓侃】

    注:[转载请注明文章来源.保持原样] 出处:http://www.cnblogs.com/jyli/archive/2010/02/02/1660634.html  作者:李嘉昱 这是Kan老大的We ...

  2. iOS 单元测试(Unit Test 和 UI Test)

    之前一直搞过~~最近试了一下下,完美~~ 附上一篇文章,不同的伙伴可以看看: http://www.jianshu.com/p/009844a0b9edUnitTest(简单的单元测试使用) http ...

  3. 使用Word2010发布博客文章

    发布博客可以直接在web页面上面编辑,也可以使用客户端编辑,其中客户端支持windows live writer以及word本身的发布博客功能.个人试用后倾向于使用word发布博客文章. 下面的内容转 ...

  4. 教主泡嫦娥(RQNOJ 595)

    题目描述 [问题背景] 2012年12月21日下午3点14分35秒,全世界各国的总统以及领导人都已经汇聚在中国的方舟上. 但也有很多百姓平民想搭乘方舟,毕竟他们不想就这么离开世界,所以他们决定要么登上 ...

  5. 优化IDEA启动速度,快了好多。后面有什么优化点,会继续往里面添加

    1.优化启动 修改bin/idea.exe.vmoptions文件如下: -Xms256m   初始堆大小-Xmx384m   最大堆大小 -XX:+UseParNewGC   使用并行收集算法 2. ...

  6. 【洛谷 P1666】 前缀单词 (Trie)

    题目链接 考试时暴搜50分...其实看到"单词","前缀"这种字眼时就要想到\(Trie\)的,哎,我太蒻了. 以一个虚点为根,建一棵\(Trie\),然后\( ...

  7. bzoj 1901 线段树套平衡树+二分答案查询

    我们就建一颗线段树,线段树的每一个节点都是一颗平衡树,对于每个询问来说,我们就二分答案, 查询每个二分到的mid在这个区间里的rank,然后就行了 /************************* ...

  8. css的@符号的作用简单介绍

  9. strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。

    strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. http://bbs.51cto.com/thread-1106891-1.html

  10. 无法解析的DNS服务地址

    如果DNS服务器地址设置不当,可能会导致网速慢.出现弹窗广告.网址打不开.打开不是自己想要的网站等一系列问题. 请参考: DNS的作用是什么,怎样设置DNS? https://jingyan.baid ...