封装JDBC操作数据库的方法

时间:2022-12-15 18:06:19

自己动手封装java操作数据库的方法:

一:目录结构

封装JDBC操作数据库的方法

二:所需依赖的第三方jar包

这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包

三:代码

1:和数据库进行交互,首先是数据源,获取连接,代码如下:

 /**
*
*/
package com.hlcui.datasource; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; /**
* @author Administrator 定义获取和关闭数据源的方法
*/
public class DataSourceUtil { /**
* 注册数据库驱动
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} /**
* 获取数据源
*
* @throws SQLException
*/
public static Connection getConnection(String url, String user,
String password) throws SQLException {
return DriverManager.getConnection(url, user, password);
} /**
* 关闭数据源
*
* @throws SQLException
*/
public static void closeConnection(Connection conn) throws SQLException {
if (null != conn) {
conn.close();
}
}
}

2:有个数据库连接之后,可以对数据库进行操作了

 /**
*
*/
package com.hlcui.dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.hlcui.Constants;
import com.hlcui.datasource.DataSourceUtil;
import com.hlcui.entity.Student; /**
* @author Administrator
*
*/
public class DBUtil { /**
* 查询所有学生信息
*
* @return
*/
public static List<Student> getAllStuInfo() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Student> stus = new ArrayList<Student>();
try {
conn = DataSourceUtil.getConnection(Constants.URL,
Constants.USERNAME, Constants.PASSWORD);
String sql = "select * from student";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
double score = rs.getDouble("score");
Student s = new Student(id, name, age, score);
stus.add(s);
} } catch (Exception e) {
e.printStackTrace();
} finally { try {
if (null != rs) {
rs.close();
}
if (null != ps) {
ps.close();
}
if (null != conn) {
DataSourceUtil.closeConnection(conn);
}
} catch (SQLException e) {
e.printStackTrace();
} }
return stus;
} /**
* 根据id查询学生的信息
*/
public static Student getStuInfoById(int id) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Student s = null;
try {
conn = DataSourceUtil.getConnection(Constants.URL,
Constants.USERNAME, Constants.PASSWORD);
String sql = "SELECT * FROM student where id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
double score = rs.getDouble("score");
s = new Student(id, name, age, score);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != rs) {
rs.close();
}
if (null != ps) {
ps.close();
}
if (null != conn) {
DataSourceUtil.closeConnection(conn);
}
} catch (Exception e2) {
}
}
return s;
} /**
* 增加学生信息
*/
public static void saveStuInfo(Student stu) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DataSourceUtil.getConnection(Constants.URL,
Constants.USERNAME, Constants.PASSWORD);
String sql = "insert into student (id,name,age,score) values (?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setInt(1, stu.getId());
ps.setString(2, stu.getName());
ps.setInt(3, stu.getAge());
ps.setDouble(4, stu.getScore());
int insertCount = ps.executeUpdate();
System.out.println(isSuccess(insertCount));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
if (null != conn) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
} /**
* 根据id删除学生信息
*/
public static void deleteStuInfo(int id) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DataSourceUtil.getConnection(Constants.URL,
Constants.USERNAME, Constants.PASSWORD);
String sql = "delete from student where id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
int deleteCount = ps.executeUpdate();
System.out.println(isSuccess(deleteCount));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
if (null != conn) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
} /**
* 根据id修改学生信息
*/
public static void modifyStuInfo(Student stu) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DataSourceUtil.getConnection(Constants.URL,
Constants.USERNAME, Constants.PASSWORD);
String sql = "update student set name = ?,age = ? ,score = ? where id = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, stu.getName());
ps.setInt(2, stu.getAge());
ps.setDouble(3, stu.getScore());
ps.setInt(4, stu.getId());
int count = ps.executeUpdate();
System.out.println(isSuccess(count));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
if (null != conn) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
} /**
* 判断操作是否成功
*/
public static String isSuccess(int count) {
if (count > 0) {
return "操作成功!";
} else {
return "操作失败!";
}
}
}

3:POJO实体类

 /**
*
*/
package com.hlcui.entity; /**
* @author Administrator
*
*/
public class Student {
private int id;
private String name;
private int age;
private double score; public Student() { } public Student(int id, String name, int age, double score) {
super();
this.id = id;
this.name = name;
this.age = age;
this.score = score;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public double getScore() {
return score;
} public void setScore(double score) {
this.score = score;
} }

4:常量类Constants

 /**
*
*/
package com.hlcui; /**
* @author Administrator
*
*/
public class Constants { public static final String URL = "jdbc:mysql://localhost:3306/test";
public static final String USERNAME = "root";
public static final String PASSWORD = "root"; }

四:测试类,验证是否能够操作数据库中数据

 /**
*
*/
package com.hlcui.test; import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List; import org.junit.Test; import com.hlcui.Constants;
import com.hlcui.dao.DBUtil;
import com.hlcui.datasource.DataSourceUtil;
import com.hlcui.entity.Student; /**
* @author Administrator
*
*/
public class TestJdbc { /**
* 测试获取数据库连接
*
* @throws SQLException
*/
@Test
public void testGetConnection() throws SQLException {
Connection conn = DataSourceUtil.getConnection(Constants.URL,
Constants.USERNAME, Constants.PASSWORD);
System.out.println("conn:" + conn); } /**
* 测试获取所有的学生信息
*/
@Test
public void testGetAllStuInfo() {
List<Student> stus = DBUtil.getAllStuInfo();
Iterator<Student> it = stus.iterator();
while (it.hasNext()) {
Student s = it.next();
System.out.println(s.getId() + "," + s.getName() + "," + s.getAge()
+ "," + s.getScore());
}
} /**
* 测试根据id获取学生信息
*/
@Test
public void testGetStuInfoById() {
int id = 1;
Student s = DBUtil.getStuInfoById(id);
System.out.println(s.getId() + "," + s.getName() + "," + s.getAge()
+ "," + s.getScore());
} /**
* 测试添加学生信息
*/
@Test
public void testSaveStuInfo() {
Student s = new Student(4, "Lucy", 27, 100.0);
DBUtil.saveStuInfo(s);
} /**
* 测试删除学生信息
*/
@Test
public void testDeleteStuInfo() {
int id = 4;
DBUtil.deleteStuInfo(id);
} /**
* 测试修改学生信息
*/
@Test
public void testModifyStuInfo(){
Student s = new Student(3,"Lili",24,9000.0);
DBUtil.modifyStuInfo(s);
} }

以上代码均已验证正确。

封装JDBC操作数据库的方法的更多相关文章

  1. 几种通过JDBC操作数据库的方法,以及返回数据的处理

    1.SQL TO String :只返回一个查询结果 例如查询某条记录的总数 rs = stmt.executeQuery(replacedCommand);             if (rs ! ...

  2. JDBC操作数据库的学习&lpar;2&rpar;

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

  3. JDBC操作数据库的学习&lpar;1&rpar;

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

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

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

  5. Java基础之原生JDBC操作数据库

    前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...

  6. Spring入门&lpar;十五&rpar;:使用Spring JDBC操作数据库

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

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

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

  8. JDBC操作数据库实例

    jdbc操作数据库实例 1.jdbc创建数据库 1.1 前提条件 1.拥有创建和删除表的权限 2.数据库已经启动,且可用 1.2 jdbc创建数据库表的步骤: 导包:导入需要进行数据库编程的 JDBC ...

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

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

随机推荐

  1. SQL实现表名更改,列名更改,约束更改

    修改表名 格式:sp_rename tablename,newtablename sp_rename tablename,newtablename 修改字段名 格式:sp_rename 'tablen ...

  2. Node&period;js的process&period;nextTick&lpar;callback&rpar;理解

    Node.js是单线程的,基于事件循环,非阻塞 IO的.事件循环中使用一个事件队列,在每个时间点上,系统只会处理一个事件,即使电脑有多个CPU核心,也无法同时并行的处理多个事件.因此,node.js适 ...

  3. 如何定位Sharepoint网站集所在的w3wp进程

     方法1.    直接开始运行,输入cmd,再输入iisapp可以列出当前所有IIS中的WebApplication所对应的w3wp.exe进程,后面都有一个进程号标识,在VS中调试的时候附加到对应进 ...

  4. salesforce 零基础学习(三十)工具篇:Debug Log小工具

    开发中查看log日志是必不可少的,salesforce自带的效果显示效果不佳,大概显示效果如下所示: chrome商城提供了apex debug log良好的插件,使debug log信息更好显示.假 ...

  5. IE6 Must Die

    最近 Twitter 上很多人在推一个名为 IE6 Must Die 的活动, 参与的朋友可以通过头像转换服务在自己的头像上加上一个禁止 IE6 的图标, 很是拉风. Internet Explore ...

  6. mysql优化之表建设

    就拿常见的用户表.文章类的表.日志表来分析如下 CREATE TABLE `user` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMEN ...

  7. SQL 替换指定列中的指定字符串

    Update 表名 Set 列名 = Replace(列名,‘被替换的字符’,‘要替换的字符’) Demo: UPDATE BPM_DailySET Workstation = REPLACE(Wor ...

  8. Linux摄像头驱动学习之:(一)V4L2&lowbar;框架分析

    这段时间开始搞安卓camera底层驱动了,把以前的的Linux视频驱动回顾一下,本篇主要概述一下vfl2(video for linux 2). 一. V4L2框架: video for linux ...

  9. group by和distinct语句的执行顺序

    同一条语句之中,如果同时有group by和distinct语句,是先group by后distinct,还是先distinct后group by呢? 先说结论:先group by后distinct. ...

  10. &lbrack;VC6&rsqb;ONMESSAGE&lpar;&rpar;宏编译时出现&quot&semi;sytax error &semi;&quot&semi;错误时

    自定义消息时编译出错,经排查,在定义消息的头文件里 #define WM_XXX (WM_USER+1000); 最后多加了一个分号引起. 吐血.