使用JDBC处理Postgresql数据库

栏目: Java · 发布时间: 6年前

内容简介:不得不吐槽的是Java的配置真心的繁琐,如果没有有IDE的话,手动处理这些内容真心会累死人。今天简单的来说明下,如何使用JDBC来连接数据库,只能说是1个抛砖引玉的过程。这里,我们选择的Java版本为8,使用的数据库是Postgresql。首先我们使用maven下载对应的依赖:

不得不吐槽的是 Java 的配置真心的繁琐,如果没有有IDE的话,手动处理这些内容真心会累死人。

今天简单的来说明下,如何使用JDBC来连接数据库,只能说是1个抛砖引玉的过程。

这里,我们选择的Java版本为8,使用的数据库是Postgresql。首先我们使用maven下载对应的依赖:

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->  
<dependency>  
    <groupId>org.postgresql</groupId>  
    <artifactId>postgresql</artifactId>  
    <version>42.2.5</version>  
</dependency>  
<dependency>  
    <groupId>com.alibaba</groupId>  
    <artifactId>fastjson</artifactId>  
    <version>1.2.49</version>  
</dependency>  
...

接着我们编写代码,引入如下的几个包:

import java.util.*;  
import java.io.*;  
import java.sql.*;  
import com.alibaba.fastjson.*;

然后定义1个公共类:

public class hello {  
    public static void main(String[] args) {  
        Properties properties = new Properties();  
        try {  
            Class.forName("org.postgresql.Driver");  
            InputStream stream = new FileInputStream("db.properties");  
            properties.load(stream);  
            String url = properties.getProperty("url");  
            String user = properties.getProperty("user");  
            String pwd = properties.getProperty("pwd");  
            stream.close();  
            Connection conn = DriverManager.getConnection(url, user, pwd);  
            Statement smt = conn.createStatement();  
            smt.setFetchSize(50);  
            smt.setMaxRows(10);  
            ResultSet rs = smt.executeQuery("select * from fund");  
            ResultSetMetaData metadata = rs.getMetaData();  
            JSONArray arr = new JSONArray();  
            while(rs.next()){  
                HashMap<String, Object> map = new HashMap<>();  
                int count = metadata.getColumnCount();  
                for(int i=0;i<count;i++){  
                    String label = metadata.getColumnLabel(i+1);  
                    Object val = rs.getObject(label);  
                    map.put(label, val);  
                }  
                arr.add(map);  
            }  
            rs.close();  
            String response = JSON.toJSONString(arr);  
            System.out.println(response);  
        } catch (Exception e){  
            e.printStackTrace();  
        }  

    }  
}

在这个类,我们可以将程序划分为如下3个部分:

  • 读取配置文件
  • 进行数据查询
  • 进行数据序列化

对于配置文件的读取,我们选择使用FileInputStream来读取1个文件,这个文件中的内容类似如下:

url=jdbc:postgresql://localhost:5432/dog  
user=dog  
pwd=123456

这里我们通过 Class.forName 导入对应包中的类,然后通过Properties实例的load方法将之前文件输入流传递来进来,从而得到1个键值对的对象。之后我们就可以通过Properties实例的 getProperty 进行键值的获取。

对于数据的查询,我们使用了 setMaxRows 方法设置其最大查询的行数,类似于如下的操作:

select * from fund limit 10

而对于数据的序列化,我们通过ResultSet实例的 getMetaData 方法得到1个ResultSetMetaData实例,之后我们调用其 getColumnCount 方法得到列的数量。之后,我们进行迭代,通过其 getColumnLabel 得到列的标签名称,而对应的值通过ResultSet实例的getObject方法来得到。

在这里,我们使用阿里巴巴公司fastjson来进行JSON的序列化处理,我们将对应的值添加到JSONArray中,最后调用 JSON.toJSONString 将对应的对象序列化为JSON字符串。其结果为:

[{"fund_type":8,"fund_id":"000001","fund_name":"华夏成长","fund_code":"HXCZ"},{"fund_type":8,"fund_id":"000002","fund_name":"华夏成长(后端)","fund_code":"HXCZ"},{"fund_type":6,"fund_id":"000003","fund_name":"中海可转债A","fund_code":"ZHKZZA"},{"fund_type":6,"fund_id":"000004","fund_name":"中海可转债C","fund_code":"ZHKZZC"},{"fund_type":7,"fund_id":"000005","fund_name":"嘉实增强信用定期债券","fund_code":"JSZQXYDQZQ"},{"fund_type":6,"fund_id":"000007","fund_name":"鹏华国企债债券","fund_code":"PHGQZZQ"},{"fund_type":3,"fund_id":"000008","fund_name":"嘉实中证500ETF联接","fund_code":"JSZZ500ETFLJ"},{"fund_type":10,"fund_id":"000009","fund_name":"易方达天天理财货币A","fund_code":"YFDTTLCHBA"},{"fund_type":10,"fund_id":"000010","fund_name":"易方达天天理财货币B","fund_code":"YFDTTLCHBB"},{"fund_type":8,"fund_id":"000011","fund_name":"华夏大盘精选","fund_code":"HXDPJX"}]

当然,在这个过程中我们甚至还可以进行一些键值的获取及剔除,再返回给前端。


以上所述就是小编给大家介绍的《使用JDBC处理Postgresql数据库》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UX设计之道

UX设计之道

[美]Russ Unger、[美]Carolyn Chandler / 陈军亮 / 人民邮电出版社 / 2015-4-1 / 49.00元

本书的目标是提供一些基本的工具及应用场景,帮助你及工作团队一起来使用这些工具和方法。正如你将在本书很多章节中看到的那样,我们没有尝试包罗万象、迎和所有的人,但我们试图给你提供一些用户体验(UX)设计师需要具备的核心信息和知识。除了我们自己的案例外,我们还提供了一些帮你了解如何开始准备基本材料的案例,让你可综合这些信息来创建某些更新、更好或者是更适合自己意图的东西。一起来看看 《UX设计之道》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试