Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của kèo bóng đá pháp.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

31.21. kèo bóng đá pháp ví dụ

Những ví dụ này và các ví dụ khác có thể được tìm thấy trong thư mụcsrc/test/exampleTrong phân phối mã nguồn.

Ví dụ 31-1.libpqkèo bóng đá pháp ví dụ 1

10951_14413

Ví dụ 31-2.libpqkèo bóng đá pháp ví dụ 2

14610_18634

Ví dụ 31-3.libpqkèo bóng đá pháp ví dụ 3

/*
 * src/test/example/testlibpq3.c
 *
 *
 * Testlibpq3.c
 * Kiểm tra các tham số ngoài dòng và I/O nhị phân.
 *
 * Trước khi chạy này, hãy điền vào cơ sở dữ liệu với các lệnh sau
 * (được cung cấp trong src/test/example/testlibpq3.sql):
 *
 * Tạo lược đồ testlibpq3;
 * Đặt search_path = testlibpq3;
 * Tạo bảng TEST1 (i int4, t văn bản, b bytea);
 * Chèn vào các giá trị test1 (1, 'joe' vị trí ',' \ 000 \ 001 \ 002 \ 003 \ 004 ');
 * Chèn vào các giá trị Test1 (2, 'ho ở đó', '\ 004 \ 003 \ 002 \ 001 \ 000');
 *
 * Đầu ra dự kiến ​​là:
 *
 * Tuple 0: Got
 * i = (4 byte) 1
 * t = (11 byte) 'Joe's Place'
 * b = (5 byte) \ 000 \ 001 \ 002 \ 003 \ 004
 *
 * Tuple 0: Got
 * I = (4 byte) 2
 * t = (8 byte) 'ho ở đó'
 * b = (5 byte) \ 004 \ 003 \ 002 \ 001 \ 000
 */

#ifdef Win32
#include <windows.h
#endif

#include <stdio.h
#include <stdlib.h
#include <stdint.h
#include <chuỗi.h
#include <sys/type.h
#include "libpq-fe.h"

/ * cho ntohl/htonl */
#include <netinet/in.h
#include <arpa/inet.h

khoảng trống tĩnh
exit_nicely (pgconn *Conn)

    Pqfinish (Conn);
    Thoát (1);

/*
 * Hàm này in một kết quả truy vấn là một định dạng nhị phân từ
 * Một bảng được định nghĩa như trong nhận xét ở trên.  Chúng tôi chia nó ra vì
 * hàm main () sử kèo bóng đá phápng nó hai lần.
 */
khoảng trống tĩnh
show_binary_results (pgresult *res)

    int i,
                j;
    int i_fnum,
                t_fnum,
                b_fnum;

    / * Sử kèo bóng đá phápng pqfnumber để tránh các giả định về thứ tự trường trong kết quả */
    i_fnum = pqfnumber (res, "i");
    t_fnum = pqfnumber (res, "t");
    b_fnum = pqfnumber (res, "b");

    for (i = 0; i <pqntuples (res); i ++)

        char *iptr;
        char *tptr;
        char *bptr;
        int blen;
        int ival;

        / * Nhận các giá trị trường (chúng tôi bỏ qua khả năng chúng là null!) */
        iptr = pqgetValue (res, i, i_fnum);
        tptr = pqgetValue (res, i, t_fnum);
        bptr = pqgetValue (res, i, b_fnum);

        /*
         * Đại diện nhị phân của INT4 nằm trong thứ tự byte mạng, mà
         * Chúng ta nên ép buộc tốt hơn cho đơn đặt hàng byte địa phương.
         */
        Ival = nTohl ( *((uint32_t *) iptr));

        /*
         * Biểu diễn nhị phân của văn bản là, tốt, văn bản và kể từ khi libpq
         * Đủ tốt để nối một byte số 0 vào nó, nó sẽ hoạt động tốt
         * dưới dạng chuỗi C.
         *
         * Đại diện nhị phân của bytea là một loạt các byte, có thể
         * Bao gồm các null nhúng vì vậy chúng tôi phải chú ý đến chiều dài trường.
         */
        blen = pQGetLpm (res, i, b_fnum);

        printf ("tuple %d: got \ n", i);
        printf ("i = ( %d byte) %d \ n",
               PqgetLpm (res, i, i_fnum), ival);
        printf ("t = (%d byte) '%s' \ n",
               PQGetLpm (res, i, t_fnum), tptr);
        printf ("b = (%d byte)", blen);
        for (j = 0; j <blen; j ++)
            printf ("\%03o", bptr [j]);
        printf ("\ n \ n");