zoukankan      html  css  js  c++  java
  • 数据访问类的封装

    职责分离原则- -每个类职责尽可能的单一。

    1.界面,逻辑的分离

    2.数据,功能的分离

    3.对数据访问来说,对表的操作分离。

    例如对数据库wang下面的两个表login和fruit完成增删改查的操作

    login表:

    fruit表:

    建立三个包分别完成表的操作、对数据的访问、界面。

    在com.itnba.maya.dal包中将与数据库的连接与操作分离,同时不同表的操作也分离开。

    在com.itnba.maya.data包中将对不同表的数据访问分离。

    在com.itnba.maya.ui中进行界面操作。

     首先建立一个类DBConnection。

    package com.itnba.maya.dal;
    import java.sql.*;
    public class DBConnection {
        private static String drv = "com.mysql.jdbc.Driver";
        private static String url = "jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK";
        private static String uid="root";
        private static String pwd= "";
        public static Connection getConnection() throws Exception
        {
            Class.forName(drv);
            Connection conn = DriverManager.getConnection(url,uid,pwd);
            return conn;
        }
    
    }

    对表的访问分别建立fruit和login,其中login:

    package com.itnba.maya.data;
    
    public class login {
         private String username;
         private String name;
         private String password;
         private double account;
    
         public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        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 double getAccount() {
            return account;
        }
        public void setAccount(double account) {
            this.account = account;
        }
    
    }

    分别建立对表的操作FruitDao和LoginDao;其中LoginDao:

    package com.itnba.maya.dal;
    
    import java.sql.*;
    import java.util.*;
    
    import com.itnba.maya.data.login;
    
    public class LoginDao {
    private Connection conn;
                        private PreparedStatement sta;
                        private ResultSet rs;
                        public LoginDao() throws Exception
                        {
                            conn = DBConnection.getConnection();//构造函数,当在界面new一个LoginDao()时,与数据库连接。
                        }
                        public void delete(String key)//删除方法
                        {    
                            try{
                            String sql = "delete from login where key=?";
                            sta = conn.prepareStatement(sql);
                            sta.setString(1, key);
                            sta.executeUpdate();
                            }
                            catch(Exception e)
                            {
                                e.printStackTrace();
                            }
                            finally
                            {
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }     
                            }
                        }
                        public void insert(String name,String userName,String password ,double account) //输入方法
                        {
                            try{
                            String sql = "insert into login values (?,?,?,?)";
                            sta = conn.prepareStatement(sql);
                            sta.setString(1, userName);
                            sta.setString(2, name);
                            sta.setString(3, password);
                            sta.setDouble(4, account);
                            sta.executeUpdate();
                            }
                            catch(Exception e){
                                e.printStackTrace();
                            }
                            finally{
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                            }
                        }
                        public void insert(login data)//输入方法的重载,当传入是login类型的参数时,通过调用上面的insert()方法完成数据的写入。
                        {
                            insert(data.getUsername(),data.getName(),data.getPassword(),data.getAccount());
                        }
                        public void update(String userName,String name,String password ,double account) 
                        {
                            try{
                        String sql = "update login set name = ?,password = ?,account = ?where username = ?";
                        sta = conn.prepareStatement(sql);
                        sta.setString(1, name);
                        sta.setString(2, password);
                        sta.setDouble(3, account);
                        sta.setString(4, userName);
                        sta.executeUpdate();
                            }
                            catch(Exception e)
                            {
                                e.printStackTrace();
                            }
                            finally{
                        try {
                            conn.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                            }
                        }
                        public void Update(login data){
                            update(data.getUsername(),data.getName(),data.getPassword(),data.getAccount());
                        }
                        public ArrayList<login> select() //对表全部查看时,需要用一个集合接收数据库中表的内容
                        {
                            ArrayList<login> list = new ArrayList<login>();
                            String sql = "select * from login";
                            try{
                                sta = conn.prepareStatement(sql);
                                rs = sta.executeQuery();
                                while(rs.next()) //将表中的数据,存到集合中。   
                                {
                                    login data = new login();
                                    data.setUsername(rs.getString(1));
                                    data.setName(rs.getString(2));
                                    data.setPassword(rs.getString(3));
                                    data.setAccount(rs.getDouble(4));
                                    list.add(data);
                                }
                            }
                            catch(Exception e)
                            
                            {
                                e.printStackTrace();
                            }
                            finally
                            {
                                try {
                                    conn.close();
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            }
                            return list;
                        }
                        public login select (String key)//通过主键查一条数据时
                        {
                            login data = null ;
                            try{
                                String sql = "select * from login where username = ?";
                                sta = conn.prepareStatement(sql);
                                sta.setString(1, key);
                                rs = sta.executeQuery();
                                while(rs.next())
                                {
                                    data = new login();  
                                    data.setUsername(rs.getString(1));
                                    data.setName(rs.getString(2));
                                    data.setPassword(rs.getString(3));
                                    data.setAccount(rs.getDouble(4));
                                }
                            }
                            catch(Exception e)
                            {
                                e.printStackTrace();
                            }
                            finally
                            {
                                try {
                                    conn.close();
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            }
                            return data;
                        }
    
    }
  • 相关阅读:
    Ajax beforeSend和complete 方法
    CLR Via CSharp读书笔记(17):委托
    linux上部署Django项目(Apache+mod_wsgi+django)
    用Apache+mod_wsgi部署python程序 作者:leven | 日期20101129 00:09:37
    VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
    Django and mod_wsgi deploy example
    How to use Django with FastCGI, SCGI, or AJP¶
    Fedora 15 下编译安装apache
    Change Ubuntu Server from DHCP to a Static IP Address
    How to Verify a CentOS Linux Server is 32 Bit or 64 Bit
  • 原文地址:https://www.cnblogs.com/ermeng/p/6257405.html
Copyright © 2011-2022 走看看