Ví dụ 2-1là một mẫu chương trình hiển thị cách giao diện đối kèo bóng đá hôm nay và ngày mai trongkèo bóng đá hôm nay và ngày maicó thể được sử dụng. kèo bóng đá hôm nay và ngày mai phần của chương trình được nhận xét nhưng còn lại trong nguồn cho lợi ích của người đọc. Chương trình này có thể được tìm thấy trongsrc/test/exre/testlo.cTrong nguồn phân bổ. Các ứng dụng phía trước sử dụng đối kèo bóng đá hôm nay và ngày mai giao diện trongkèo bóng đá hôm nay và ngày mainên Bao gồm tệp tiêu đềkèo bóng đá hôm nay và ngày mai/kèo bóng đá hôm nay và ngày mai-fs.hvà liên kết vớikèo bóng đá hôm nay và ngày maiThư viện.
Ví dụ 2-1. Các đối kèo bóng đá hôm nay và ngày mai vớikèo bóng đá hôm nay và ngày maiChương trình ví dụ
/*-------------------------------------------------------------------------- * * testlo.c-- * Kiểm tra bằng cách sử dụng các đối kèo bóng đá hôm nay và ngày mai với libpq * * Bản quyền (c) 1994, Regents của Đại học California * *---------------------------------------------------------------------- */ #include <stdio.h #include "libpq-fe.h" #include "libpq/libpq-fs.h" #Define Bufsize 1024 /* * Nhập khẩu * Nhập tệp "in_filename" vào cơ sở dữ liệu dưới dạng đối kèo bóng đá hôm nay và ngày mai "lobjoid" * */ Oid Nhập khẩuFile (PGConn *Conn, Char *FileName) Oid lobjid; int lobj_fd; char buf [bufsize]; int nbytes, TMP; int fd; /* * Mở tệp để đọc trong */ fd = open (tên tệp, o_rdonly, 0666); if (fd <0) /* lỗi */ fprintf (stderr, "không thể mở tệp unix %s \ n", tên tệp); /* * Tạo đối kèo bóng đá hôm nay và ngày mai */ lobjid = lo_creat (Conn, inv_read | inv_write); if (lobjid == 0) fprintf (stderr, "không thể tạo đối kèo bóng đá hôm nay và ngày mai \ n"); lobj_fd = lo_open (Conn, lobjid, inv_write); /* * Đọc từ tệp Unix và ghi vào tệp đảo ngược */ while ((nbytes = read (fd, buf, bufsize)) 0) tmp = lo_write (Conn, lobj_fd, buf, nbytes); if (tmp <nbytes) fprintf (stderr, "lỗi trong khi đọc đối kèo bóng đá hôm nay và ngày mai \ n"); (void) đóng (FD); (void) lo_close (Conn, lobj_fd); trả lại lobjid; Vô hiệu Pickout (PGConn *Conn, Oid lobjid, Int Start, Int Len) int lobj_fd; char *buf; int nbytes; int nread; lobj_fd = lo_open (Conn, lobjid, inv_read); if (lobj_fd <0) fprintf (stderr, "không thể mở đối kèo bóng đá hôm nay và ngày mai %d \ n", lobjid); lo_lseek (Conn, lobj_fd, bắt đầu, seek_set); buf = malloc (len + 1); nread = 0; while (len - nread 0) nbytes = lo_read (Conn, lobj_fd, buf, len - nread); buf [nbytes] = ''; fprintf (stderr, " %s", buf); NREAD += nbytes; miễn phí (BUF); fprintf (stderr, "\ n"); lo_close (Conn, lobj_fd); Vô hiệu Ghi đè (PGConn *Conn, Oid lobjid, Int Start, Int Len) int lobj_fd; char *buf; int nbytes; int nwritten; int i; lobj_fd = lo_open (Conn, lobjid, inv_read); if (lobj_fd <0) fprintf (stderr, "không thể mở đối kèo bóng đá hôm nay và ngày mai %d \ n", lobjid); lo_lseek (Conn, lobj_fd, bắt đầu, seek_set); buf = malloc (len + 1); for (i = 0; i <len; i ++) buf [i] = 'x'; buf [i] = ''; nwritten = 0; while (Len - nwritten 0) nbytes = lo_write (Conn, lobj_fd, buf + nwritten, len - nwritten); nwritten += nbytes; miễn phí (BUF); fprintf (stderr, "\ n"); lo_close (Conn, lobj_fd); /* * Xuất * */ Vô hiệu ExportFile (PGConn *Conn, oid lobjid, char *fileName) int lobj_fd; char buf [bufsize]; int nbytes, TMP; int fd; /* * Tạo một "đối tượng" đảo ngược */ lobj_fd = lo_open (Conn, lobjid, inv_read); if (lobj_fd <0) fprintf (stderr, "không thể mở đối kèo bóng đá hôm nay và ngày mai %d \ n", lobjid); /* * Mở tệp để được ghi vào */ fd = open (tên tệp, o_creat | o_wronly, 0666); if (fd <0) /* lỗi */ fprintf (stderr, "không thể mở tệp unix %s \ n", tên tệp); /* * Đọc từ tệp Unix và ghi vào tệp đảo ngược */ while ((nbytes = lo_read (Conn, lobj_fd, buf, bufsize)) 0) TMP = Viết (FD, BUF, NBYTES); if (tmp <nbytes) fprintf (stderr, "lỗi trong khi viết %s \ n", tên tệp); (void) lo_close (Conn, lobj_fd); (void) đóng (FD); trở lại; Vô hiệu exit_nicely (pgconn *Conn) Pqfinish (Conn); Thoát (1); int Main (int argc, char ** argv) char *in_filename, *out_filename; cơ sở dữ liệu char *; Oid lobjoid; Pgconn *Conn; Pgresult *res; if (argc! = 4) fprintf (stderr, "sử dụng: %s database_name in_filename out_filename \ n", Argv [0]); Thoát (1); cơ sở dữ liệu = argv [1]; in_filename = argv [2]; out_filename = argv [3]; /* * Thiết lập kết nối */ Conn = pqsetDB (null, null, null, null, cơ sở dữ liệu); / * Kiểm tra xem kết nối phụ trợ đã được thực hiện thành công */ if (pqstatus (Conn) == Connection_bad) fprintf (stderr, "kết nối với cơ sở dữ liệu '%s' không thành công. \ n", cơ sở dữ liệu); fprintf (stderr, "%s", pqerrormessage (Conn)); exit_nicely (Conn); res = pqExec (Conn, "bắt đầu"); PQCLEAR (RES); printf ("Nhập tệp %s \ n", in_filename); /* lobjoid = Nhập khẩu (Conn, in_filename); */ lobjoid = lo_import (Conn, in_filename); /* printf ("như đối kèo bóng đá hôm nay và ngày mai %d. \ n", lobjoid); printf ("chọn ra byte 1000-2000 của đối kèo bóng đá hôm nay và ngày mai \ n"); Pickout (Conn, lobjoid, 1000, 1000); printf ("ghi đè byte 1000-2000 của đối kèo bóng đá hôm nay và ngày mai với x của \ n"); Ghi đè (Conn, lobjoid, 1000, 1000); */ printf ("xuất đối kèo bóng đá hôm nay và ngày mai sang tệp %s \ n", out_filename); /* exportFile (Conn, lobjoid, out_filename); */ lo_export (Conn, lobjoid, out_filename); res = pqExec (Conn, "end"); PQCLEAR (RES); Pqfinish (Conn); Thoát (0);