免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 11042 | 回复: 20
打印 上一主题 下一主题

jdbc crud的演示代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-02 13:04 |只看该作者 |倒序浏览
下面是连接数据库的代码,sqlserver2000需要打上sp3的补丁,jdbc sp2的驱动 注意版本对应

package demo;

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

public class ConnectionManager {
    private static String username = "sa";
    private static String password = "secret";
    private static String dUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo";
    private static String dDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private static Connection conn = null;

    public static Connection getConnection() {
        try{
            Class.forName(dDriver);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        try{
            conn=DriverManager.getConnection(dUrl,username,password);
        }catch(Exception e){
            e.printStackTrace();
        }
        return conn;
    }

    public void rollback() {
        try {
            conn.rollback();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void commit() {
        try {
            conn.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void close(ResultSet rs, PreparedStatement pstmt,
            Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


[ 本帖最后由 freelogin 于 2009-7-2 13:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-02 13:07 |只看该作者
下面是实体类代码

package demo;

public class Employee {
    private int e_id;
    private String name;
    private String password;
    private String email;
    
    public int getE_id() {
        return e_id;
    }
    public void setE_id(int e_id) {
        this.e_id = e_id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}


下面是数据库访问部分

package demo;

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

public class EmployeeManager {

    public Employee createEmployee(Employee emp) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        String insertSql = "insert into employee(name,password,email) values(?,?,?)";
        try {
            conn = ConnectionManager.getConnection();
            pstmt = conn.prepareStatement(insertSql);
            pstmt.setString(1, emp.getName());
            pstmt.setString(2, emp.getPassword());
            pstmt.setString(3, emp.getEmail());
            pstmt.executeUpdate();
        } catch (SQLException e) {
        }
        return emp;
    }

    public Employee updateEmployee(Employee emp) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        String insertSql = "update  employee set name=? , password=? , email=? where e_id = ?";
        try {
            conn = ConnectionManager.getConnection();
            pstmt = conn.prepareStatement(insertSql);
            pstmt.setString(1, emp.getName());
            pstmt.setString(2, emp.getPassword());
            pstmt.setString(3, emp.getEmail());
            pstmt.setInt(4, emp.getE_id());
            pstmt.executeUpdate();
        } catch (SQLException e) {
        }
        return emp;
    }

    public Employee getEmployee(int id) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        Employee emp = null;
        ResultSet rs = null;
        String insertSql = "select * from employee where e_id = ?";
        try {
            conn = ConnectionManager.getConnection();
            pstmt = conn.prepareStatement(insertSql);
            pstmt.setInt(1, id);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                emp = new Employee();
                emp.setE_id(rs.getInt("e_id"));
                emp.setName(rs.getString("name"));
                emp.setPassword(rs.getString("password"));
                emp.setEmail(rs.getString("email"));
            }
        } catch (SQLException e) {
        }
        return emp;
    }

    public void removeEmployee(int id) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        String insertSql = "delete from employee where e_id = ?";
        try {
            conn = ConnectionManager.getConnection();
            pstmt = conn.prepareStatement(insertSql);
            pstmt.setInt(1, id);
            pstmt.executeUpdate();
        } catch (SQLException e) {
        }
    }

}

论坛徽章:
0
3 [报告]
发表于 2009-07-02 13:09 |只看该作者
这是测试下 可以运行

package demo;

public class EmployeeTest {
    public static void add(){
        Employee emp = new Employee();
        EmployeeManager em = new EmployeeManager();
        emp.setName("jack");
        emp.setPassword("secret");
        emp.setEmail("god@gmail.com");
        em.createEmployee(emp);        
    }
    
    public static void update(int id){
        Employee emp = new Employee();
        EmployeeManager em = new EmployeeManager();
        emp.setName("tom");
        emp.setPassword("helem");
        emp.setEmail("jack@sina.com");
        emp.setE_id(id);
        em.updateEmployee(emp);
    }
    
    public static void printEmployee (){
        Employee emp = new Employee();
        EmployeeManager em = new EmployeeManager();
        emp=em.getEmployee(2);
        System.out.println(emp.getE_id());
        System.out.println(emp.getName());
        System.out.println(emp.getPassword());
        System.out.println(emp.getEmail());        
    }
    
    public static void del(int id){        
        EmployeeManager em = new EmployeeManager();
        em.removeEmployee(id);        
    }
    
    public static void main(String[] args){
        //add();

        //update(2);

        //printEmployee();

        //del(1);

        //System.out.println("---");

    }
}

论坛徽章:
0
4 [报告]
发表于 2009-07-02 17:16 |只看该作者
加上SQL 语句吧
create database demo;
use demo
create table employee(e_id identity primary key,name varchar(30),password varchar(20),email varchar(20));

论坛徽章:
0
5 [报告]
发表于 2009-07-02 17:19 |只看该作者
刚刚少了获得全部员工信息的方法
如下

public List<Employee> getAllEmployees() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection conn = null;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement pstmt = null;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Employee emp = null;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rs = null;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<Employee> list = new ArrayList<Employee>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String querySql = "select * from employee";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn = ConnectionManager.getConnection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstmt = conn.prepareStatement(querySql);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = pstmt.executeQuery();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (rs.next()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp = new Employee();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp.setE_id(rs.getInt("e_id"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp.setName(rs.getString("name"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp.setPassword(rs.getString("password"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp.setEmail(rs.getString("email"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(emp);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException e) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return list;
&nbsp;&nbsp;&nbsp;&nbsp;}



下面是测试方法

  
List<Employee> list =em.getAllEmployees();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i<list.size();i++){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  emp=(Employee)list.get(i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(emp.getE_id());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(emp.getName());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(emp.getPassword());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(emp.getEmail());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

论坛徽章:
0
6 [报告]
发表于 2009-07-02 19:56 |只看该作者
3Q~正是我需要的

论坛徽章:
0
7 [报告]
发表于 2009-07-03 08:54 |只看该作者
BZ给加个精华吧
我也辛辛苦苦打了一个多小时呢

论坛徽章:
43
15-16赛季CBA联赛之上海
日期:2020-11-04 09:36:5515-16赛季CBA联赛之北控
日期:2018-10-29 18:20:3415-16赛季CBA联赛之北京
日期:2018-10-06 21:39:5715-16赛季CBA联赛之天津
日期:2018-08-09 10:30:41ChinaUnix元老
日期:2018-08-03 17:26:00黑曼巴
日期:2018-07-13 09:53:5415-16赛季CBA联赛之吉林
日期:2018-03-30 12:58:4315-16赛季CBA联赛之佛山
日期:2017-12-01 10:26:3815-16赛季CBA联赛之上海
日期:2017-11-14 09:20:5015-16赛季CBA联赛之江苏
日期:2019-02-20 09:53:3319周年集字徽章-庆
日期:2019-08-27 13:23:2515-16赛季CBA联赛之广夏
日期:2019-09-03 18:29:06
8 [报告]
发表于 2009-07-03 17:05 |只看该作者
好长啊。

论坛徽章:
0
9 [报告]
发表于 2009-07-03 17:31 |只看该作者
代码好像不太严谨,

论坛徽章:
26
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:1315-16赛季CBA联赛之天津
日期:2016-12-12 10:44:23
10 [报告]
发表于 2009-07-03 17:37 |只看该作者
MS 自带的 JDBC 好像有BUG,一般都用jdts的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP