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

一:目录结构

二:所需依赖的第三方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操作数据库的学习(2)

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

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

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

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

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

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

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

  6. Spring入门(十五):使用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. MFC定时器

    比较简单,在程序中可以找到原型. 在程序中我们经常要使用定时刷新的功能,典型的应用是在信息管理系统中表单要跟着数据库中的数据变动.MFC提供了定时器来完成这个功能. ================= ...

  2. java@ What are C++ features missing in Java

    Following features of C++ are not there in Java. No pointers No sizeof operator No scope resolution ...

  3. 怎么创建MongoDB数据库

    MongoDB didn’t provides any command to create “database“. Actually, you don’t need to create it manu ...

  4. Xcode5和ios7下交叉编译ffmpeg

    先申明本机环境 dev-mini:ffmpeg devone$ sw_vers  ProductName:    Mac OS X ProductVersion:  BuildVersion:   1 ...

  5. 单节点伪分布集群(weekend110)的HBase子项目启动顺序

    伪分布模式下,如(weekend110)hbase-env.sh配置文档中的HBASE_MANAGES_ZK的默认值是true,它表示HBase使用自身自带的Zookeeper实例.但是,该实例只能为 ...

  6. 第十三章、学习 Shell Scripts 循环 (loop)

    while do done, until do done (不定循环) while [ condition ] <==中括号内的状态就是判断式 do <==do 是回圈的开始! 程序段落 ...

  7. iOS 分类和继承

    iOS 中分类(Categories) 和 继承(Inherit)有相同的功能,但在一些细节上又有差异,简单介绍一下两者的异同. 分类可以在不知道系统类源代码的情况下,为这个类添加新的方法.分类只能用 ...

  8. 剑指OFFER之顺时针打印矩阵(九度OJ1391)

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...

  9. 解决SenTestingKit/SenTestingKit.h: No such file or directory

    在一个iOS项目中引入了单元测试,感觉项目间的依赖关系有些乱,就建了一个新的Project,再把原来的.h和.m加进去,编译时竟然出现“SenTestingKit/SenTestingKit.h: N ...

  10. svn 如何解决冲突

    项目中,往往不止你一人开发,多人开发,难免会有代码的冲突.彼此间谁也不能保证不会修改同个文件.如果修改了同个方法的内容.这时提交到svn是会提示代码冲突的. 当然,冲突是可控的,但不能避免.每次写代码 ...