JDBC 操作数据库
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 操作数据库的更多相关文章
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- JDBC操作数据库的三种方式比较
JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- JDBC操作数据库的基本步骤:
JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...
- springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务
springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...
- Spring入门(十五):使用Spring JDBC操作数据库
在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
- JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一
系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...
随机推荐
- ambari server内存溢出
抛出的异常信息如下: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Me ...
- WebKit阅读起步
转摘自:http://my.oschina.net/myemptybottle/blog/42683 部分转摘,全文请查看原文! 我第一次看到WebKit代码中did,will前缀有点困惑,看多了才熟 ...
- openstack中region、az、host aggregate、cell 概念
1. region 更像是一个地理上的概念,每个region有自己独立的endpoint,regions之间完全隔离,但是多个regions之间共享同一个keystone和dashboard.(注:目 ...
- keras_训练人脸识别模型心得
keras_cnn_实现人脸训练分类 废话不多扯,直接进入正题吧!今天在训练自己分割出来的图片,感觉效果挺不错的,所以在这分享一下心得,望入门的同孩采纳. 1.首先使用python OpenCV库里面 ...
- 编写类du命令Python脚本
#!/usr/bin/env python #_*_ coding:utf-8 _*_ #计算整个目录的大小,脚本接受-H参数,来加上适当的单位 #功能像du看齐 import os,sys from ...
- C++学习笔记之——内联函数,引用
本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...
- Linux上使用程序相对路径访问文件【转】
转自:http://blog.csdn.net/yinxusen/article/details/7444249 今天一个朋友问我这个问题,说为什么在Windows上跑得很好的应用程序,移植到Linu ...
- python基础===python3 get和post请求(转载)
get请求 #encoding:UTF-8 importurllib importurllib.request data={} data['name']='aaa' url_parame=urllib ...
- C# 获取存在DataTable1不存在DataTable2的数据的快速方法
通过合并和获得改变两个方法获得差异的部分: dataTable1.AcceptChanges();dataTable1.Merge(dataTable2);DataTable changesTable ...
- Oracle基础 10 表 table
--查看表的结构 desc ygb; select * from user_tab_columnswhere table_name='YGB'; --新建表ygb create table ygb( ...