`
点点与麦兜
  • 浏览: 9520 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JDBC的基本操作

    博客分类:
  • JDBC
阅读更多
package com.lxf.domain:

package com.lxf.domain;

import java.util.Date;

public class User {
    private int id;
    private String name;
    private Date birthday;
    private float money;
    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 Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public float getMoney() {
        return money;
    }
    public void setMoney(float money) {
        this.money = money;
    }
    public String toString(){
	String information = getId()+"    "+getName()+"    "+getBirthday()+"    "+getMoney();
	return information;
    }
}


package com.lxf.dao:
异常类:
package com.lxf.dao;

public class DaoException extends RuntimeException{
    private static final long serialVersionUID = 1L;
    public DaoException(){}
    public DaoException(String message){
	super(message);
    }
    public DaoException(Throwable cause){
	super(cause);
    }
    public DaoException(String message,Throwable cause){
	super(message,cause);
    }
}


工厂模式工厂类:
package com.lxf.dao;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class DaoFactory {
    private static UserDao userDao = null;
    private static DaoFactory instance = new DaoFactory();

    private DaoFactory() {
	try (InputStream inStream = DaoFactory.class.getClassLoader()
		.getResourceAsStream("daoconfig.properties")) {

	    Properties prop = new Properties();
	    prop.load(inStream);

	    String userDaoClass = prop.getProperty("userDaoClass");
	    userDao = (UserDao) Class.forName(userDaoClass).newInstance();

	} catch (ClassNotFoundException | InstantiationException
		| IllegalAccessException | IOException e) {
	    throw new ExceptionInInitializerError(e);
	}
    }

    public static DaoFactory getInstance() {
	return instance;
    }

    public UserDao getUserDao() {
	return userDao;
    }
}

工厂类的daoconfig.properties文件:
userDaoClass=com.lxf.dao.impl.UserDaoJdbcImpl


接口:
package com.lxf.dao;

import com.lxf.domain.User;

public interface UserDao {
    //增加用户
    public void addUser(User user);
    //根据Id获取用户
    public User getUser(int userId);
    //根据用户名获取用户
    public User findUser(String loginName);
    //更新用户
    public void update(User user);
    //删除用户
    public boolean delete(User user);
}



package com.lxf.dao.impl:
接口的实现:
package com.lxf.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.lxf.dao.DaoException;
import com.lxf.dao.UserDao;
import com.lxf.domain.User;
import com.lxf.jdbc.JdbcUtils;

public class UserDaoJdbcImpl implements UserDao {

    @Override
    public void addUser(User user) {
	String sql = "insert into user(name,birthday,money)values(?,?,?)";
	try (Connection conn = JdbcUtils.getConnection();
		PreparedStatement ps = conn.prepareStatement(sql)) {
	    ps.setString(1, user.getName());
	    ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
	    ps.setFloat(3, user.getMoney());
	    ps.executeUpdate();
	} catch (SQLException e) {
	    throw new DaoException(e.getMessage(), e);
	}
    }

    @Override
    public User getUser(int userId) {
	User user = null;
	String sql = "select id,name,birthday,money from user where id=?";
	try (PreparedStatement ps = JdbcUtils.getConnection().prepareStatement(
		sql);) {
	    // 处理结果
	    ps.setInt(1, userId);
	    try (ResultSet rs = ps.executeQuery();) {
		while (rs.next()) {
		    user = mappingUser(rs);
		}
	    } catch (SQLException e) {
		throw new DaoException(e.getMessage(), e);
	    }
	} catch (SQLException e) {
	    throw new DaoException(e.getMessage(), e);
	}
	return user;
    }

    @Override
    public User findUser(String loginName) {
	User user = null;
	String sql = "select id,name,birthday,money from user where name=?";
	try (PreparedStatement ps = JdbcUtils.getConnection().prepareStatement(
		sql);) {
	    ps.setString(1, loginName);
	    try (ResultSet rs = ps.executeQuery()) {
		while (rs.next()) {
		    user = mappingUser(rs);
		}
	    } catch (SQLException e) {
		throw new DaoException(e.getMessage(), e);
	    }
	} catch (SQLException e) {
	    throw new DaoException(e.getMessage(), e);
	}
	return user;
    }

    @Override
    public void update(User user) {
	String sql = "update user set name=?,birthday=?,money=? where id=?";
	try (PreparedStatement ps = JdbcUtils.getConnection().prepareStatement(
		sql);) {
	    ps.setString(1, user.getName());
	    ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
	    ps.setFloat(3, user.getMoney());
	    ps.setInt(4, user.getId());
	    ps.executeUpdate();// 执行语句,返回受影响的行数
	} catch (Exception e) {
	    throw new DaoException(e.getMessage(), e);
	}
    }

    @Override
    public boolean delete(User user) {
	boolean flag = false;
	String sql = "delete from user where id=" + user.getId();
	try (Connection conn = JdbcUtils.getConnection();
		Statement st = conn.createStatement();) {
	    int i = st.executeUpdate(sql); // 执行语句,返回受影响的行数
	    if (i >= 0) {
		flag = true;
	    }
	} catch (SQLException e) {
	    throw new DaoException(e.getMessage(), e);
	}
	return flag;
    }

    private User mappingUser(ResultSet rs) throws SQLException {
	User user;
	user = new User();
	user.setId(rs.getInt("id"));
	user.setName(rs.getString("name"));
	user.setBirthday(rs.getDate("birthday"));
	user.setMoney(rs.getFloat("money"));
	return user;
    }
}

一个简单的测试类:
package com.lxf.dao;

import java.util.Date;

import com.lxf.dao.impl.UserDaoJdbcImpl;
import com.lxf.domain.User;

public class UserDaoTest {
    public static void main(String[]args){
	UserDao userDao = DaoFactory.getInstance().getUserDao();
	sop(userDao.getUser(1));
    }
    public static void sop(Object obj){
	System.out.println(obj);
    }
}

代码有点基础,贴出来怕自己忘记,没有贴出数据库连接代码。在上一篇博客。
如果发现有需要更改的地方,请及时指出,我不胜感激。
0
3
分享到:
评论

相关推荐

    通用JDBC基本操作封装源代码

    简单易用的数据库封装操作,包含数据库连接池的基本实现,数据库连接可重用,所有的操作都脱离源生JDBC操作,开发人员只需要熟悉Java集合的用法,会写Sql即可轻松的使用该封装好的JDBC API写出合理的代码。...

    基于命令行的JDBC基本操作示例

    演示了JDBC的基本使用方法,以及Druid和C3P0数据源的使用方法。 该示例是基于命令行窗口的CRUD操作。 示例最后演示了Apache Commons DBUtils开源工具类的使用方法。

    jdbc基本操作增删改查-oracle

    数据库orcle,道理其实都一样,会这个就OK了。JDBC的基本操作。

    JDBC数据库操作值MySQL批处理操作

    JDBC基本操作,及批处理操作

    jdbc操作基本操作包装 实现简单的OR映射 外加爬虫

    jdbc操作基本操作包装 实现简单的OR映射,能实现java对象与数据库之间的映射和自动装载 轻量级别的数据库操作 外加爬虫

    JDBC学习资料

    JDBC的学习资料,里面有JDBC基本操作的学习PPT文件

    JDBC数据库编程实验

    (3)掌握可滚动和可更新的结果集的基本操作方法; (4)理解JDBC中实现事务处理的基本方法; (5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法...

    jdbc操作文档,数据库基本操作文档集合

    // 对数据库进行插入,更新,删除等操作时用executeUpdate()返回int型。 int i = ste.executeUpdate(); // 对数据库进行查看操作时用executeQuery()返回ResultSet结果集。 ResultSet res = ste.executeQuery(); 5....

    JDBC数据库连接基本操作

    JDBC数据库连接基本操作,各种数据库,不同数据库连接包的不同操作,初学者实用!

    jdbc基础(概念、操作步骤、连接方式等)

    jdbc基础,包含基本概念、数据库连接操作、JDBC常用接口、与oracle/mysql/db2创建连接、Statement、PreparedStatement会话使用、Clob/Blob大文件处理、批处理操作等。

    jdbc操作数据库的基本流程详解

    所有的JDBC应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。下面我们就来仔细看一看每一个步骤:其实按照上面所说每个...

    jdbc增删改查基本操作的使用

    jdbc增删改查基本操作的使用

    jdbc-odbc的基本操作

    String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+dbPath; cn = DriverManager.getConnection(dbUrl); pstmt = cn.prepareStatement("select PCity from shouji where ?=PhoneNo"); ...

    JDBC 3.0数据库开发与设计

    第3章 JDBC3.0 API数据库开发基本操作 3.1 数据库用例说明 3.2 与数据库建立连接 3.2.1 JDBC URL 3.2.2 连接事件(Connection Event) 3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 ...

    Java实习报告:通过JDBC方式操作数据库(带实例和代码).doc

    (1)掌握通过JDBC方式操作数据库的基本步骤。 (2)掌握增、删、改记录的方法。 (3)掌握查询记录以及遍历查询结果的方法。 2.实验内容 实验题1:学生信息管理函数。 实验题2:向student表连续插入5条记录,使用...

    JDBC详解HTML-JDBC.pp

    2、JDBC操作基本流程: 1>.导入驱动:实例化时自动向DriverManager注册(DriverManager.registerDriver()) <1>.Class.forName(driver) <2>.Class.forName(driver).newInstance() <3>.new driver() 2>.取得...

    基于java+jdbc+mysql图书馆系统.zip

    图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本数据库操作。 图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本数据库操作。 图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本...

    JDBC相关操作

    JDBC的相关操作文档!有关一些基本的操作!亲们 还在等什么 !

    sqljdbc_8.2.2.0_chs.zip

    JDBC(Java Database Connectivity, Java 数 据 库 连 接)是 一 种可用于执行 SQL 语句的 Java API(Application Programming ...JDBC 的基本层次结构由 Java 程序、JDBC 驱动程序管理器、驱动程序和数据库四部分组成

    JDBC的小Demo(基本的JDBC、数据库连接池、JDBCTemplate)

    关于使用JDBC的一些小Demo.主要是关于使用基本的JDBC进行增删改查操作,还有使用数据库连接池技术进行连接,最后写了几个关于JDBCTemplate的小Demo

Global site tag (gtag.js) - Google Analytics