先在資料庫中建立以下表格:
 CREATE TABLE users (id INT, data jsonb);

程式碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.postgresql.util.PGobject;

public class NewClass {

    public static void main(String[] args) throws SQLException {

        try (Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/db_name", "user_name", "password");) {

            // 插入
            PGobject pgObj = new PGobject();
            pgObj.setType("jsonb");
            pgObj.setValue("{\"食物\":\"中餐\"}"); // 建議這裡用 org.json 或其他 Json 庫包起來

            try (PreparedStatement ps = conn.prepareStatement("INSERT INTO users VALUES (1, ?);");) {
                ps.setObject(1, pgObj);
                ps.execute();
            }

            // 查詢 (取出整個 Json) ,  可以用 org.json 或其他 Json 庫來讀取
            try (PreparedStatement ps = conn.prepareStatement("SELECT * FROM users;");
                    ResultSet rs = ps.executeQuery();) {
                while (rs.next()) {
                    System.out.println("Query : " + rs.getInt("id") + " , " + rs.getString("data"));
                }
            }

            System.out.println("------------------------");
            // 查詢 (取出部分 Json) ,  可以用 org.json 或其他 Json 庫來讀取
            try (PreparedStatement ps = conn.prepareStatement("SELECT data#>>'{食物}' FROM users;");
                    ResultSet rs = ps.executeQuery();) {
                while (rs.next()) {
                    System.out.println("Query : " + rs.getString(1));
                }
            }
        }
    }
}


執行結果:

Query : 1 , {"食物": "中餐"}
------------------------
Query : 中餐





    全站熱搜

    黃彥霖 發表在 痞客邦 留言(0) 人氣()