PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chuyển đổi loại. Tôi phải làm gì với giá trị PostgreSQL OID trong libpq trong C?

Tôi đã tìm thấy câu trả lời sau khi hỏi điều này. Về cơ bản có một tệp có tên là catalog / pg_type.h, cùng với libpq-fe.h và postgres.h. Bạn cần bao gồm sau khi bao gồm libpq-fe.h và postgres.h, sau đó bạn có thể truy cập các định nghĩa như TEXTOID , BOOLOID , INT4OID vv

#include <stdio.h>
#include <postgres.h>
#include <libpq-fe.h>
#include <catalog/pg_type.h>

// ... snip ...

if (PQgetisnull(result, row, col)) {
  // value is NULL, nothing more to do
} else {
  char * value  = PQgetvalue(result, row, col);
  int    length = PQgetlength(result, row, col);

  switch (PQftype(result, col)) {
    case INT2OID:
    case INT4OID:
    case INT8OID:
      // process value as an integer
      break;

    default:
      // just default to a text representation
  }
}

Bạn cần xem xét tất cả các OID trong pg_type.h để thực sự có một danh sách mở rộng hoặc chỉ cần kiểm tra những gì bạn nhận được khi thực hiện SELECT 't'::boolean cơ bản gõ truy vấn, v.v. và chỉ xây dựng công tắc khi bạn cần một loại mới hỗ trợ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Những vật thể lớn đáng sợ đó

  2. Cấu trúc lại một hàm PL / pgSQL để trả về kết quả đầu ra của các truy vấn SELECT khác nhau

  3. Cách nhanh nhất để thực hiện chèn hàng loạt vào Postgres là gì?

  4. Tại sao tôi có thể tạo một bảng với PRIMARY KEY trên một cột có thể làm trống?

  5. không thể tạo khóa chính tự động tăng thêm bằng flask-sqlalchemy