使用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数据库》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Practical Algorithms for Programmers

Practical Algorithms for Programmers

Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99

Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具