zoukankan      html  css  js  c++  java
  • 怎么读取数据库中数据

    1.要先了解是用MVC的思想来实现,MVC是由模型层(Model),视图层(View)和控制器层(Controller)这三个相互独立的层面所组成的。

    2.第二步是很重要的,你要有MYSQL,并在其中创建表。

    3.在MyEclipse中建立一个项目并给项目取一个名字,在此我建立的名字为userManager。

    4.现在来分析M层需要什么,然而M需要建立实体类,dao层和DBHelper类(DBHelper是一个很好用的类,将要用的封装起来)

    4.1 建立实体类(User),需要根据数据库中定义的内容来制定,例如

    package entity;
    
    public class User {
        private String userID;//数据成员(字段)
        private String userName;
        private String password;
        public String getUserID() {
            return userID;
        }
        public void setUserID(String userID) {
            this.userID = userID;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    
    }

    在以上代码中定义了3个数据成员,分别是userID,userName,password;它们都定义为私有的。

    4.2 建立dao层

    package dao;
    
    import java.util.*;
    import java.sql.*;
    import entity.*;
    import DBHelper.DBHelper;
    
    public class Userdao {
        public List getAllUser()
        {
            try
            {
            String SQL="SELECT* FROM user";
            ResultSet rs=DBHelper.getResultSet(SQL);
            List users=new ArrayList();
            while(rs.next())
            {
                User u=new User();
                u.setUserID(rs.getString("userID"));
                u.setUserName(rs.getString("userName"));
                u.setPassword(rs.getString("password"));
                users.add(u); 
            }
            return users;
        }
            catch(Exception ex){
                ex.printStackTrace();
                return null;
                }
            
    }
    }

    在以上代码中体现的是要查询所有的用户数据

    List是列表的意思,List getAllUser是列出所有的数据

    try是抛出异常

    String SQL="SELECT * FROM user"是指查询数据库中user表

    ResultSet rs=DBHelper.getResultSet(SQL);是指结果等于SQL中的数据结果集

    List users=new ArrayList();是指输出用户列表

    然后用循环语句来遍历数据

    while(rs.next())
            {
                User u=new User();
                u.setUserID(rs.getString("userID"));
                u.setUserName(rs.getString("userName"));
                u.setPassword(rs.getString("password"));
                users.add(u); 
            }

    返回值为 users

    最后写一个捕获异常的语句,返回值为空

    4.3 DBHelper

    package DBHelper;
    
    import java.io.Console;
    import java.sql.*;
    import java.util.Enumeration;
    //import java.util.logging.*;
    //import javax.swing.table.*;
    
    /**
     *  SQL 基本操作
     * 通过它,可以很轻松的使用 JDBC 来操纵数据库
     * @author Null
     */
    public class DBHelper
    {
    
        /**
         * 驱动
         */
        //public static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
        public static String driver = "com.mysql.jdbc.Driver";
        /**
         * 连接字符串
         */
        //public static String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=st";
        public static String url = "jdbc:mysql://127.0.0.1:3306/test";
        /**
         * 用户名
         */
        public static String user = "root";
        /**
         * 密码
         */
        public static String password = "root";
    
        /**
         * 不允许实例化该类
         */
        private DBHelper()
        {
        }
    
        /**
         * 获取一个数据库连接
         * 通过设置类的  driver / url / user / password 这四个静态变量来 设置数据库连接属性
         * @return 数据库连接
         */
        public static Connection getConnection()
        {
            try
            {
                //获取驱动
                Class.forName(driver);
            } catch (ClassNotFoundException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
    
            try
            {
                return DriverManager.getConnection(url, user, password);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                return null;
            }
        }
    
        /**
         * 获取一个 Statement
         * 该 Statement 已经设置数据集 可以滚动,可以更新
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static Statement getStatement()
        {
            Connection conn = getConnection();
            if (conn == null)
            {
                return null;
            }
            try
            {
                return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                        ResultSet.CONCUR_UPDATABLE);
            // 鐠佸墽鐤嗛弫鐗堝祦闂嗗棗褰叉禒銉︾泊閸旓拷閸欘垯浜掗弴瀛樻煀
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                close(conn);
            }
            return null;
        }
    
        /**
         * 获取一个 Statement
         * 该 Statement 已经设置数据集 可以滚动,可以更新
         * @param conn 数据库连接
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static Statement getStatement(Connection conn)
        {
            if (conn == null)
            {
                return null;
            }
            try
            {
    
                return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                // 设置数据集可以滚动,可以更新
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                return null;
            }
        }
    
        /**
         * 获取一个带参数的 PreparedStatement
         * 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static PreparedStatement getPreparedStatement(String cmdText, Object[] cmdParams)
        {
            Connection conn = getConnection();
            if (conn == null)
            {
                return null;
            }
    
            PreparedStatement pstmt = null;
            try
            {
                
                pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                int i = 1;
                for (Object item : cmdParams) //java foreach遍历集合,要求集合类实现Enumeration接口
                {
                    pstmt.setObject(i, item);
                    i++;
                }
            } catch (SQLException e)
            {
                e.printStackTrace();
                close(conn);
            }
            return pstmt;
        }
    
        /**
         *  获取一个带参数的 PreparedStatement
         * 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object[] cmdParams)
        {
            if (conn == null)
            {
                return null;
            }
    
            PreparedStatement pstmt = null;
            try
            {
                pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                int i = 1;
                for (Object item : cmdParams)
                {
                    pstmt.setObject(i, item);
                    i++;
                }
            } catch (SQLException ex)
            {
                System.out.println(ex.getMessage());
                //ex.printStackTrace();
                close(pstmt);
            }
            return pstmt;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param cmdText SQL 语句
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        public static int ExecSql(String cmdText)
        {
            Statement stmt = getStatement();
            if (stmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = stmt.executeUpdate(cmdText);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null,ex);
                System.out.println(ex.getMessage());
                i = -1;
            }
            closeConnection(stmt);
            return i;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param cmdText SQL 语句
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        public static int ExecSql(Connection conn, String cmdText)
        {
            Statement stmt = getStatement(conn);
            if (stmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = stmt.executeUpdate(cmdText);
    
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
               
                i = -1;
            }
            close(stmt);
            return i;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        //非常好用
        public static int ExecSql(String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);
            if (pstmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = pstmt.executeUpdate();
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
               i = -1;
            }
            closeConnection(pstmt);
            return i;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        public static int ExecSql(Connection conn, String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);
            if (pstmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = pstmt.executeUpdate();
    
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                i = -1;
            }
            close(pstmt);
            return i;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param cmdText SQL 语句
         * @return
         */
        public static Object ExecScalar(String cmdText)
        {
            ResultSet rs = getResultSet(cmdText);
            Object obj = getScalar(rs);
            closeConnection(rs);
            return obj;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param conn 数据库连接
         * @param cmdText SQL 语句
         * @return
         */
        public static Object ExecScalar(Connection conn, String cmdText)
        {
            ResultSet rs = getResultSet(conn, cmdText);
            Object obj = getScalar(rs);
            closeEx(rs);
            return obj;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static Object ExecScalar(String cmdText, Object[] cmdParams)
        {
            ResultSet rs = getResultSet(cmdText, cmdParams);
            Object obj = getScalar(rs);
            closeConnection(rs);
            return obj;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static Object ExecScalar(Connection conn, String cmdText, Object[] cmdParams)
        {
            ResultSet rs = getResultSet(conn, cmdText, cmdParams);
            Object obj = getScalar(rs);
            closeEx(rs);
            return obj;
        }
    
        /**
         * 返回一个 ResultSet
         * @param cmdText SQL 语句
         * @return
         */
        public static ResultSet getResultSet(String cmdText)
        {
            Statement stmt = getStatement();
            if (stmt == null)
            {
                return null;
            }
            try
            {
                return stmt.executeQuery(cmdText);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
               closeConnection(stmt);
            }
            return null;
        }
    
        /**
         * 返回一个 ResultSet
         * @param conn
         * @param cmdText SQL 语句
         * @return
         */
        public static ResultSet getResultSet(Connection conn, String cmdText)
        {
            Statement stmt = getStatement(conn);
            if (stmt == null)
            {
                return null;
            }
            try
            {
                return stmt.executeQuery(cmdText);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                close(stmt);
            }
            return null;
        }
    
        /**
         * 返回一个 ResultSet
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static ResultSet getResultSet(String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);
            if (pstmt == null)
            {
                return null;
            }
            try
            {
                return pstmt.executeQuery();
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                closeConnection(pstmt);
            }
            return null;
        }
    
        /**
         * 返回一个 ResultSet
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static ResultSet getResultSet(Connection conn, String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);
            if (pstmt == null)
            {
                return null;
            }
            try
            {
                return pstmt.executeQuery();
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                close(pstmt);
            }
            return null;
        }
    
        public static Object getScalar(ResultSet rs)
        {
            if (rs == null)
            {
                return null;
            }
            Object obj = null;
            try
            {
                if (rs.next())
                {
                    obj = rs.getObject(1);
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
            return obj;
        }
     
        private static void close(Object obj)
        {
            if (obj == null)
            {
                return;
            }
            try
            {
                if (obj instanceof Statement)
                {
                    ((Statement) obj).close();
                } else if (obj instanceof PreparedStatement)
                {
                    ((PreparedStatement) obj).close();
                } else if (obj instanceof ResultSet)
                {
                    ((ResultSet) obj).close();
                } else if (obj instanceof Connection)
                {
                    ((Connection) obj).close();
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
           }
        }
    
        private static void closeEx(Object obj)
        {
            if (obj == null)
            {
                return;
            }
    
            try
            {
                if (obj instanceof Statement)
                {
                    ((Statement) obj).close();
                } else if (obj instanceof PreparedStatement)
                {
                    ((PreparedStatement) obj).close();
                } else if (obj instanceof ResultSet)
                {
                    ((ResultSet) obj).getStatement().close();
                } else if (obj instanceof Connection)
                {
                    ((Connection) obj).close();
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
    
        }
    
        private static void closeConnection(Object obj)
        {
            if (obj == null)
            {
                return;
            }
            try
            {
                if (obj instanceof Statement)
                {
                    ((Statement) obj).getConnection().close();
                } else if (obj instanceof PreparedStatement)
                {
                    ((PreparedStatement) obj).getConnection().close();
                } else if (obj instanceof ResultSet)
                {
                    ((ResultSet) obj).getStatement().getConnection().close();
                } else if (obj instanceof Connection)
                {
                    ((Connection) obj).close();
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
           }
        }
    }

    5.在C层控制器层(Controller)中建立servlet类

    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                doPost(request, response);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            Userdao dao=new Userdao();
            List users=dao.getAllUser();
            request.getSession().setAttribute("users", users);
            response.sendRedirect("../user.jsp");
            
        }

    在servlet中主要写执行语句

    List users=dao.getAllUser();

    显示所有用户列表

    request.getSession().setAttribute("users", users);

    请求会话的属性

    response.sendRedirect("../user.jsp");

    跳转的页面路径

    6.记得要加入SQL的驱动

    7.在V层视图层(View)中写入一个jsp,取名为user,在里面写入动态内容

    <body>
        <% 
            List<User> users =(List<User>)session.getAttribute("users");
            out.print("<table border=1>");
            out.print("<tr><td>用户ID</td><td>用户名</td><td>密码</td></tr>");
            for(User u : users)
            {
                out.print("<tr>");
                out.print("<td>"+u.getUserID()+"</td>");
                out.print("<td>"+u.getUserName()+"</td>");
                out.print("<td>"+u.getPassword()+"</td>");
                out.print("</tr>");
            }
            out.print("</table>");
        %>
      </body>

    8.最后就大功告成了

    在这里显示中有??,是因为有乱码问题,还在解决中

  • 相关阅读:
    Visual Studio 2015编译64位MySQL Connector/C++
    html.parser无法完全解析网页之BUG的修正
    Boost-Visual studio 2015环境配置
    Struts2--拦截器和常用标签库
    Struts2---OGNL表达式和值栈的运用
    Struts2---对Servlet的API的访问,结果页面的配置,数据的封装
    Struts2---入门
    spring mvc 文件上传
    ElasticSearch 基本操作
    SpringBoot 项目打包后获取不到resource下资源的解决
  • 原文地址:https://www.cnblogs.com/yumofei/p/5261923.html
Copyright © 2011-2022 走看看