从JDBC中取出数据

首先要建立连接,为了在第二次链接的时候,不用重新创建Connection ,浪费,所以在创建连接的时候,先判断当前对象的conn是否为null,是才进行创建,否则直接使用已有。

    private static Connection conn = null;
    
    public Connection getConnection()
    {
        if (conn == null)
        {
            System.out.println("数据库还未连接,请创建数据库连接");
            return null;
        }
        else
            
            return conn;
    }
    
    public Connection connectDatabase(String className, String connectUrl, String username, String password)
    {
        try
        {
            /**
             *  加载mysql数据库驱动,判断conn连接是否已创建,若没有则创建,否则直接返回已有的连接。
             */
            
            Class.forName(className);
            System.out.println("Success load Driver");
            
            if (conn == null)
            {
                conn = DriverManager.getConnection(connectUrl, username, password);
                System.out.println("创建连接!");
            }
            
        }
        catch (Exception e)
        {
            
            System.out.println("Error loading jdbc driver");
            e.printStackTrace();
            
        }
        return conn;
        
    }

连接建好了,第二部就是取数据。 提供sql查询语句,将查询的结果放进一个HashMap中,key是数据库字段名,value是查询结果。 将封装好的HashMap放进List中。


public List<Map<String, String>> getSelect(Connection conn, String query)
    {
        try
        {
            /**
             * 连接数据,创建结果集
             */
            
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            List<Map<String, String>> list = new ArrayList<Map<String, String>>();
            Map<String, String> map = null;
            
            /**
             * 将查询结果集放进HashMap<Integer, StudentBean>, list添加封装好的map,
             * 返回List
             */
            while (rs.next())
            {
                map = new HashMap<String, String>();
             
                map.put("classId",rs.getString("classId"));
              
             
                map.put("studentName",rs.getString("sname"));
                map.put("studentId", rs.getString("sid"));
                list.add(map);
            }System.out.println(list.size());
            for(int i=0;i<list.size();i++){
                
                Map<String, String> m = (Map<String, String>)list.get(i);
               
             //  Map<String, String> m = (Map<String, String>)iter.next();
               for (Object obj : m.keySet())
               {
                   System.out.print(obj + ": "); //输出key
                   System.out.print("time");
                   System.out.println(": " + m.get(obj)); //输出keyValues
               }
               
           } 
            return list;
        }
        catch (Exception e)
        {
            System.out.print("get data error!");
            e.printStackTrace();
            return null;
        }
    }

好了写一个List<Map<String,String> 的迭代器 ,查询返回结果

public void Query(List list)  
    {  
        /** 
         * 判断查询结果数目,为0 输出提示,结束方法 
         */  
        if (list == null)  
        {  
            System.out.println("list is  null  ,error");  
            return;  
              
        }  
        else if (list.size() == 0)  
        {  
            System.out.println("no data found!!");  
            return;  
        }  
        /** 
         * 迭代Iterator, 
         */  
        else  
        {  
            Iterator<Map<String, String>> iter = list.iterator();  
              
            while (iter.hasNext())  
            {  
                  
                Map<String, String> m = (Map<String, String>)iter.next();  
                for (Object obj : m.keySet())  
                {  
                    System.out





写个测试类Test.class

 public static void main(String[] args)
    {
        String sqlString = "select * from student ";
        String className = "com.mysql.jdbc.Driver";
        String connectUrl = "jdbc:mysql://localhost:3306/test";
        String username = "root";
        String password = "123";
        
        JdbcInterface inter = new JdbcImpl();
        
        Connection conn = inter.connectDatabase(className, connectUrl,username,password);
        inter.getSelect(conn, sqlString);











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值