`
自动放假
  • 浏览: 25007 次
文章分类
社区版块
存档分类
最新评论

从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);











分享到:
评论

相关推荐

    使用servlet,jdbc将mysql中数据显示在jsp页面中

    7. **在JSP页面上显示数据**:在JSP页面中,利用JSTL(JavaServer Pages Standard Tag Library)或EL(Expression Language)表达式,从请求作用域中取出数据,并将其插入到HTML元素中。例如,可以使用`&lt;c:forEach&gt;`...

    jdbc连接oracle字符集不同出现乱码

    当使用 JDBC 从远程 Oracle 数据库提取数据时,如果远程数据库使用的是 `US7ASCII` 字符集,而本地应用期望的数据字符集为 `ZHS16GBK`,则在读取过程中会因字符集转换错误而导致乱码。这是因为 Java 在处理字符串时...

    JDBC 图片录入mysql库 完整版

    从ResultSet中取出BLOB对象,然后写入到OutputStream,可以是文件流或者内存流,从而恢复图片。 在本案例的"imgTest"项目中,可能包含了一个完整的示例代码,演示了这些步骤。这个项目经过测试,证明了图片可以成功...

    java取出mysql中数据,显示在jtable里面

    根据给定的文件信息,我们可以总结出以下关于如何使用Java从MySQL数据库中获取数据并在JTable中显示的相关知识点: ### 一、导入必要的库 在Java程序中操作MySQL数据库及Swing组件,需要导入以下几个包: 1. `java...

    4个java文件放在同一个包。用JDBC调用数据库取出数.

    从代码中可以看出,这个程序使用了Swing库来构建图形用户界面(GUI)。`JFrame`是窗口的基础,`JLabel`、`JButton`、`JTextField`、`JTable`和`JScrollPane`分别是标签、按钮、文本字段、表格和滚动面板组件。 5. ...

    插入、取出Blob类型的数据代码示例

    **从数据库取出Blob数据** 取出Blob数据到本地磁盘包括以下步骤: 1. **查询数据**:执行一个SQL查询语句来获取Blob列的值。 2. **获取Blob对象**:在结果集中,使用`ResultSet.getBlob()`方法获取Blob对象。 3....

    游戏服务器 数据库连接池 jdbc 简单封装

    JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。通过JDBC,开发者可以编写跨平台的数据库应用程序,而无需关心底层数据库的具体实现。 然而,直接使用...

    JDBC与DBCP连接mysql工程

    3. **获取连接**:通过`BasicDataSource.getConnection()`获取连接,此时是从池中取出一个已存在的连接,而非直接创建。 4. **归还连接**:使用完连接后,通过`Connection.close()`方法归还给连接池,而不是真正...

    sql server中的image类型的数据导出到oracle的clob字段中

    首先,我们需要使用 JDBC 驱动程序连接到 SQL Server 数据库,并从结果集中取出 Image 类型数据: ```java InputStream in = rsSql.getBinaryStream("PICTURE"); ``` 然后,我们需要将 Image 类型数据写到文件中: `...

    用JDBC实现与MySQL连接的视频

    本视频是用eclipse实现与数据库的连接的视频,并从数据库中取出数据来做展现

    对象保存进MySQL数据库,从MySQL中读取出对象信息(源码)

    在IT行业中,数据库是存储和管理数据的核心...以上就是关于“对象保存进MySQL数据库,从MySQL中读取出对象信息”的相关知识点。理解并熟练掌握这些内容对于开发人员来说非常重要,能够帮助他们高效地进行数据存取操作。

    JDBC核心技术精讲

    9、mysql的预处理功能开启 10、JDBC中日期时间类型讨论11、通过JDBC存储和取出音频和视频数据 12、批处理概述 13、事务概述及事务的四大特性 14、mysql中使用事务 15、jdbc中使用事务 16、数据库连接池的介绍和...

    jndi数据源与数据池

    当应用程序需要连接时,可以从池中取出一个已存在的连接,用完后再归还回池,而不是直接关闭。这种机制减少了数据库连接的创建和销毁,提高了性能。 配置JNDI数据源通常涉及到两步:在应用服务器的配置文件中定义...

    图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片)

    这通常包括图片读取、BASE64编码、数据库操作以及从数据库取出数据后解码还原图片的步骤。 7. **运行环境**:虽然未明确指出,但执行这个Demo可能需要一个支持JDBC连接的数据库(如MySQL、Oracle等),以及Java开发...

    JAVA导出数据到excel中大数据量的解决方法

    数据从数据库取出使用纯jdbc方式读数据,边读边向文件中写; 待所有数据写完,将各个小excel文件进行打包,输出到输出流中。 一小部分说明 见 http://blog.csdn.net/lisen1987/article/details/16857359

    java读取sqlserver image字段.docx

    一旦从数据库中读取到了二进制数据,接下来的任务就是将这些数据写入到本地文件系统中。这通常涉及到创建一个输出流 (`OutputStream`),并将读取到的数据逐字节地写入到文件中。 **代码示例**: ```java ...

    Blob数据下载到本地

    本篇文章将详细讲解如何从Oracle数据库中下载Blob数据并将其转化为图片文件保存到本地。 首先,我们需要了解Blob数据是如何存储在数据库中的。Blob数据类型可以存储最多4GB的数据,并且它不包含任何关于数据内容的...

    向数据库中放置和取出文件

    在IT行业中,数据库不仅仅是用来存储结构化数据,如数字、字符串和日期,有时也需要存储非结构化数据,比如图片、文档和其他二进制大对象(BLOB)。标题“向数据库中放置和取出文件”涉及的就是如何在数据库系统中...

Global site tag (gtag.js) - Google Analytics