`
点点与麦兜
  • 浏览: 9750 次
  • 性别: 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基本操作,包括如何配置数据源如Druid和C3P0,以及如何利用Apache Commons DBUtils简化数据库操作。 首先,JDBC提供了统一的接口,使得开发者无需关心底层数据库的具体实现,即可...

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

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

    非常有用的jdbc的操作数据库

    **一、JDBC基本操作流程** 1. **加载驱动**:使用`Class.forName()`方法加载数据库驱动,例如`Class.forName("com.mysql.jdbc.Driver")`。 2. **建立连接**:通过`DriverManager.getConnection()`方法建立与数据库...

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

    JDBC 基本操作的使用 JDBC(Java Database Connectivity)是 Java 语言官方定义的一系列接口,用于连接和操作数据库。下面是 JDBC 基本操作的使用方法: 一、注册驱动 在使用 JDBC 程序之前,需要注册驱动以建立...

    JDBC详解(连接操作数据库、处理大数据、批处理)

    #### 四、JDBC基本操作流程 1. **加载驱动**:通过`DriverManager.registerDriver()`方法注册数据库驱动。 2. **建立连接**:使用`DriverManager.getConnection(url, user, password)`方法建立与数据库的连接。 3. ...

    ch4.JDBC技术_JAVA数据库_jdbc_canalsj4_

    2. **JDBC基本操作流程** 使用JDBC通常遵循以下步骤: - 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` - 建立连接:`Connection conn = DriverManager.getConnection(url, username, password)` - 创建...

    java之jdbc总结

    ### 一、JDBC基本操作流程 1. **导入JDBC库**:首先,你需要在项目中引入JDBC相关的jar包,通常在`java.sql`包中,比如`mysql-connector-java`。 2. **加载数据库驱动**:根据JDBC版本的不同,加载驱动的方式也会...

    达梦数据库JDBC

    **达梦数据库JDBC详解** 达梦数据库JDBC(Java Database Connectivity)是连接Java应用程序与达梦数据库系统的...在使用过程中,确保正确配置驱动、理解JDBC基本操作以及善用连接池,将有助于提升应用的性能和稳定性。

    JDBC (pdf)

    JDBC 基本操作 一旦建立了数据库连接,就可以执行 SQL 查询和其他操作。常见的 JDBC 操作包括查询数据、插入记录、更新记录以及删除记录等。 **4.1 执行查询** 执行 SQL 查询通常涉及到以下几个步骤: 1. 创建 ...

    JDBC与Java数据库编程

    三、JDBC基本操作步骤 1. 加载驱动:使用Class.forName()方法加载对应的JDBC驱动。 2. 建立连接:通过DriverManager.getConnection()方法获取数据库连接。 3. 创建Statement/PreparedStatement:根据需求创建...

    JDBC与Java数据库程序设计

    **JDBC基本操作步骤** 1. **加载驱动**:使用`Class.forName()`方法加载JDBC驱动。 2. **建立连接**:通过`DriverManager.getConnection()`方法创建到数据库的连接。 3. **创建Statement或PreparedStatement对象*...

    JDBC加上Servlet

    **JDBC基本操作步骤** 1. 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` 2. 获取连接:`Connection conn = DriverManager.getConnection(url, username, password)` 3. 创建Statement或PreparedStatement对象...

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

    本文将深入探讨JDBC的基本操作、包装机制以及如何实现简单的对象关系(OR)映射,同时也会提及外加的爬虫技术。 首先,JDBC操作的基本步骤包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL...

    JDBC驱动程序SQLServer2000.rar

    **JDBC基本操作** 使用JDBC,开发者可以执行以下数据库操作: 1. **建立连接**:`Connection conn = DriverManager.getConnection(url, user, pass);` 2. **创建Statement**:`Statement stmt = conn....

    JDBC.zip_factoryd54_jdbc

    1. **JDBC基本操作流程**: - 加载驱动:使用`Class.forName()`方法加载对应的数据库驱动。 - 获取连接:通过`DriverManager.getConnection()`方法获取数据库连接。 - 创建Statement或PreparedStatement:根据...

    JDBC所有笔记(可下载)

    2. **JDBC基本操作步骤** - 导入JDBC驱动库:`import java.sql.*;` - 加载/注册驱动:`Class.forName("com.mysql.jdbc.Driver");` - 创建数据库连接:`Connection conn = DriverManager.getConnection(url, ...

    java数据库编程jdbc

    2. **JDBC基本操作步骤**: - 加载驱动:使用Class.forName()方法加载对应数据库的JDBC驱动。 - 建立连接:通过DriverManager.getConnection()方法创建数据库连接。 - 创建Statement/PreparedStatement对象:用于...

    使用JDBC总结操作数据库

    下面将详细阐述JDBC操作数据库的基本步骤以及一些关键知识点。 1. **加载数据库驱动**: - 在开始数据库操作前,必须先加载对应的数据库驱动。在Java中,这通常通过`Class.forName()`方法完成。例如,对于Oracle...

    JDBC演示代码1.zip

    综上所述,"JDBC演示代码1.zip"中的示例将涵盖以上提到的JDBC基本操作,为开发者提供了一个实用的起点,以便理解和实践Java与MySQL数据库的交互。通过这些代码,你可以深入理解JDBC的工作原理,掌握如何在Java程序中...

Global site tag (gtag.js) - Google Analytics