9750_9789 | ||||
---|---|---|---|---|
prev | Backward nhanh | Chuyển tiếp nhanh | NEXT |
libpqlàCGiao diện của lập trình viên ứng soi kèo bóng đá truoctran vớiPostgreSQL. libpqlà một tập hợp các chức năng soi kèo bóng đá truoctran mà Cho phép các chương trình khách hàng chuyển các truy vấn choPostgreSQLMáy chủ phụ trợ và để nhận soi kèo bóng đá truoctran quả của các truy vấn này.
libpqcũng là cơ bản động cơ cho soi kèo bóng đá truoctran số khácPostgreSQLGiao diện ứng soi kèo bóng đá truoctran, bao gồm Những người được viết cho C ++, Perl, Python, TCL vàECPG. Vì vậy, soi kèo bóng đá truoctran số khía cạnh của14214_14221hành vi của Bạn sử dụng soi kèo bóng đá truoctran trong những gói đó. Cụ thể,Phần 28.11, Phần 28.12vàPhần 28,14Mô tả hành vi đó là Có thể hiển thị cho người dùng của bất kỳ ứng soi kèo bóng đá truoctran nào sử soi kèo bóng đá truoctranlibpq.
soi kèo bóng đá truoctran số chương trình ngắn được bao gồm ở cuối chương này (kèo bóng đá) để hiển thị cách Viết các chương trình sử soi kèo bóng đá truoctranlibpq. Ngoài ra còn có soi kèo bóng đá truoctran số ví dụ đầy đủ vềlibpqỨng soi kèo bóng đá truoctran trong thư mụcsrc/test/exampleTrong mã nguồn phân bổ.
Chương trình khách hàng sử soi kèo bóng đá truoctranlibpqPhải bao gồm tệp tiêu đềlibpq-fe.hvà phải liên soi kèo bóng đá truoctran vớilibpqsoi kèo bóng đá truoctran.
Các chức năng sau liên quan đến việc tạo soi kèo bóng đá truoctran với APostgreSQLMáy chủ phụ trợ. MỘT
Chương trình ứng dụng có thể mở một số soi kèo bóng đá truoctran phụ trợ
Đã có lúc. (Một lý do để làm điều đó là truy cập nhiều hơn một
cơ sở dữ liệu.) Mỗi soi kèo bóng đá truoctran được biểu diễn bằng mộtPGConnĐối tượng, được lấy từ hàmPQConnectDB
hoặcPQSetDbLogin
. Lưu ý rằng các chức năng này sẽ
Luôn trả về soi kèo bóng đá truoctran con trỏ đối tượng không null, trừ khi có lẽ ở đó
có quá ít bộ nhớ thậm chí để phân bổPGConnĐối tượng. Thepqstatus
16177_16316
PQConnectDB
Tạo soi kèo bóng đá truoctran mới với máy chủ cơ sở dữ liệu.
PGConn *PQConnectDB (const char *Conninfo);
Hàm này mở soi kèo bóng đá truoctran cơ sở dữ liệu mới bằng cách sử dụng
các tham số được lấy từ chuỗiConninfo. Không giống nhưPQSetDbLogin
bên dưới, bộ tham số
có thể được mở rộng mà không thay đổi chữ ký chức năng,
Vì vậy, sử soi kèo bóng đá truoctran chức năng này (hoặc các chất tương tự không chặn của nóPQConnectStart
vàPQConnectPoll
17116_17175
Chuỗi truyền có thể trống để sử dụng tất cả các mặc định tham số hoặc nó có thể chứa soi kèo bóng đá truoctran hoặc nhiều tham số Cài đặt được phân tách bằng khoảng trắng. Mỗi cài đặt tham số đang ở dạngtừ khóa = value. Không gian xung quanh dấu hiệu bằng nhau là tùy chọn. Để viết soi kèo bóng đá truoctran giá trị trống hoặc giá trị chứa khoảng trống, bao quanh nó với các trích dẫn đơn, ví dụ:Từ khóa = 'A Value'. Trích dẫn đơn và dấu gạch chéo ngược trong Giá trị phải được thoát bằng soi kèo bóng đá truoctran dấu gạch chéo ngược, tức là,\ 'và\.
Các từ khóa tham số hiện được công nhận là:
Tên của máy chủ để soi kèo bóng đá truoctran với.Nếu điều này bắt đầu bằng soi kèo bóng đá truoctran dấu gạch chéo, nó Chỉ định giao tiếp miền đơn hơn là Truyền thông TCP/IP; Giá trị là tên của thư mục trong đó tệp ổ cắm được lưu trữ. Các hành vi mặc định khimáy chủkhông được chỉ định là soi kèo bóng đá truoctran với một miền Unix Ổ cắmin/TMP(hoặc bất kỳ ổ cắm nào thư mục đã được chỉ định khiPostgreSQLđã được xây dựng). TRÊN máy không có ổ cắm tên miền Unix, mặc định là soi kèo bóng đá truoctran vớiLocalhost.
Địa chỉ IP số của máy chủ để soi kèo bóng đá truoctran với. Cái này phải ở định dạng địa chỉ IPv4 tiêu chuẩn, ví dụ.,172.28.40.9. Nếu bạn máy hỗ trợ IPv6, bạn cũng có thể sử dụng chúng địa chỉ. Giao tiếp TCP/IP luôn được sử dụng khi soi kèo bóng đá truoctran chuỗi không trống được chỉ định cho điều này tham số.
sử soi kèo bóng đá truoctranhostaddrThay vào đó củamáy chủ19524_19815máy chủ19842_19882hostaddr, tên máy chủ Tra cứu xảy ra. Nếu nhưhostaddrđược chỉ định mà không cómáy chủ,, giá trị chohostaddrCung cấp địa chỉ từ xa. Khi Kerberos được sử dụng, soi kèo bóng đá truoctran Truy vấn tên ngược xảy ra để có được tên máy chủ cho Kerberos. Nếu cả haihostvàhostaddrlà được chỉ định, giá trị chohostaddrđưa ra địa chỉ từ xa; giá trị chohostIS bị bỏ qua, trừ khi Kerberos được sử soi kèo bóng đá truoctran, trong trường hợp đó Giá trị đó được sử soi kèo bóng đá truoctran để xác thực Kerberos. (Lưu ý rằng xác thực có khả năng thất bại nếulibpqđược thông qua a Tên máy chủ không phải là tên của máy tạihostaddr.) Ngoài ra,hostthay vìhostaddrđược sử dụng Xác định soi kèo bóng đá truoctran trong~/.pgass(xemPhần 28.12).
Không có tên máy chủ hoặc địa chỉ máy chủ,libpq21355_21527localhost.
Số cổng để soi kèo bóng đá truoctran tại máy chủ máy chủ hoặc Tiện ích mở rộng tên tệp của ổ cắm cho Unix-Domain soi kèo bóng đá truoctran.
Tên cơ sở dữ soi kèo bóng đá truoctran. Mặc định là giống như Tên người dùng.
PostgreSQLNgười dùng Tên để soi kèo bóng đá truoctran như. Mặc định giống như Tên hệ điều hành của người dùng đang chạy ứng dụng.
Mật khẩu sẽ được sử soi kèo bóng đá truoctran nếu máy chủ yêu cầu Xác thực mật khẩu.
Chờ tối đa để soi kèo bóng đá truoctran, tính bằng giây (viết như một chuỗi số nguyên thập phân). Không hoặc không được chỉ định có nghĩa là chờ vô thời hạn. Nó không được khuyến khích Sử dụng thời gian chờ ít hơn 2 giây.
Các tùy chọn dòng lệnh sẽ được gửi đến máy chủ.
Bỏ qua (trước đây, được chỉ định nơi gửi đầu ra gỡ lỗi máy chủ).
Tùy chọn này xác định xem hoặc với cái gì Ưu tiên soi kèo bóng đá truoctranSSLsoi kèo bóng đá truoctran sẽ được đàm phán với máy chủ. Có bốn chế độ:vô hiệu hóasẽ chỉ cố gắng không được mã hóaSSLsoi kèo bóng đá truoctran;cho phép23869_23923SSLsoi kèo bóng đá truoctran, sau đó nếu điều đó thất bại, thử mộtSSLsoi kèo bóng đá truoctran;ưa thích(mặc định) sẽ đàm phán, thử trước soi kèo bóng đá truoctranSSLsoi kèo bóng đá truoctran, sau đó nếu điều đó thất bại, thử một thông thườngSSLsoi kèo bóng đá truoctran;Yêu cầuSẽ chỉ thửSSLsoi kèo bóng đá truoctran.
nếuPostgreSQLđược biên dịch mà không cần hỗ trợ SSL, sử soi kèo bóng đá truoctran tùy chọnYêu cầusẽ gây ra soi kèo bóng đá truoctran Lỗi, trong khi Tùy chọncho phépvàưa thíchsẽ là Được chấp nhận nhưnglibpqTrên thực tế sẽ không cố gắngSSLsoi kèo bóng đá truoctran.
Tùy chọn này không được ủng hộ theo hướngSSLModeCài đặt.
Nếu được đặt thành 1, anSSLsoi kèo bóng đá truoctran với máy chủ là bắt buộc (điều này tương đương vớiSSLMode Yêu cầu).libpqSau đó sẽ từ chối soi kèo bóng đá truoctran nếu máy chủ không chấp nhậnSSLsoi kèo bóng đá truoctran. Nếu đặt thành 0 (mặc định),libpqSẽ thương lượng Loại soi kèo bóng đá truoctran với máy chủ (tương đương vớiSSLMode ưa thích26086_26140PostgreSQLđược tổng hợp với Hỗ trợ SSL.
Tên dịch vụ của Kerberos sẽ sử soi kèo bóng đá truoctran khi xác thực với Kerberos 5. Điều này phải khớp với tên dịch vụ được chỉ định trong cấu hình máy chủ cho Kerberos xác thực để thành công. (Xem thêmPhần 20.2.3.)
Tên dịch vụ để sử soi kèo bóng đá truoctran cho các tham số bổ sung. Nó chỉ định tên dịch vụ trongpg_service.confgiữ tham số soi kèo bóng đá truoctran bổ sung. Điều này cho phép các ứng dụng chỉ chỉ định tên dịch vụ như vậy Các tham số soi kèo bóng đá truoctran có thể được duy trì tập trung. Nhìn thấyPostgreSQL: Tài liệu:.
Nếu bất kỳ tham số nào không được xác định, thì Biến môi trường tương ứng (xemPhần 28.11) được kiểm tra. Nếu biến môi trường cũng không được đặt, sau đó Các mặc định tích hợp được chỉ định được sử soi kèo bóng đá truoctran.
PQSetDbLogin
Tạo soi kèo bóng đá truoctran mới với máy chủ cơ sở dữ liệu.
PGConn *pqsetdblogin (const char *pghost, const char *pgport, const char *pgoptions, const char *pgtty, const char *dbname, const char *đăng nhập, const char *pwd);
Đây là tiền thân củaPQConnectDB
Với soi kèo bóng đá truoctran bộ cố định
tham số. Nó có cùng chức năng ngoại trừ
Thiếu tham số sẽ luôn luôn có các giá trị mặc định.
Viếtnull28430_28532
PQSetDB
Tạo soi kèo bóng đá truoctran mới với máy chủ cơ sở dữ liệu.
PGConn *PQSetDB (char *pghost, char *pgport, char *pgoptions, char *pgtty, char *dbname);
Đây là soi kèo bóng đá truoctran macro gọiPQSetDbLogin
với các con trỏ null choĐăng nhậpvàPWDtham số. Nó được cung cấp cho
Khả năng tương thích ngược với các chương trình rất cũ.
PQConnectStart
PQConnectPoll
Tạo a soi kèo bóng đá truoctran với máy chủ cơ sở dữ liệu trong một số chặn thái độ.
PGConn *PQConnectStart (const char *Conninfo);
29724_29782
Hai chức năng này được sử dụng để mở soi kèo bóng đá truoctran với A
máy chủ cơ sở dữ liệu sao cho chủ đề của ứng dụng của bạn về
Thực thi không bị chặn trên I/O từ xa trong khi làm như vậy.
Điểm của phương pháp này là sự chờ đợi cho I/O
Hoàn thành có thể xảy ra trong vòng lặp chính của ứng dụng, thay vào đó
hơn xuống bên trongPQConnectDB
, và vì vậy ứng soi kèo bóng đá truoctran có thể
Quản lý hoạt động này song song với các hoạt động khác
các hoạt động.
soi kèo bóng đá truoctran cơ sở dữ liệu được tạo bằng các tham số
được lấy từ chuỗiConninfo,,
được truyền cho30487_30503
.
Chuỗi này ở cùng định dạng như được mô tả ở trên choPQConnectDB
.
KhôngPQConnectStart
cũng khôngPQConnectPoll
Will
khối, miễn là soi kèo bóng đá truoctran số hạn chế được đáp ứng:
ThehostaddrvàhostTham số được sử dụng
một cách thích hợp để đảm bảo tên và tên đảo ngược đó
Truy vấn không được thực hiện. Xem tài soi kèo bóng đá truoctran của những điều này
tham số dướiPQConnectDB
ở trên để biết chi tiết.
Nếu bạn gọiPQTRACE
,,
đảm bảo rằng đối tượng luồng mà bạn theo dõi
sẽ không chặn.
Bạn đảm bảo rằng ổ cắm phù hợp
trạng thái trước khi gọiPQConnectPoll
, như mô tả
dưới.
Để bắt đầu yêu cầu soi kèo bóng đá truoctran không chặn, hãy gọiConn = PQConnectStart ("Connection_info_String"). Nếu nhưConnlà null, sau đólibpqđã không thể phân bổ
mớiPGConnCấu trúc.
Nếu không, soi kèo bóng đá truoctran hợp lệPGConnCon trỏ được trả về (mặc dù chưa đại diện cho một hợp lệ
soi kèo bóng đá truoctran với cơ sở dữ liệu). Khi trở về từPQConnectStart
, gọistatus = pqstatus (Conn). Nếu nhưtrạng tháibằngConnection_Bad, PQConnectStart
đã thất bại.
nếuPQConnectStart
Thành công, giai đoạn tiếp theo là thăm dò ý kiếnlibpqđể nó có thể tiến hành
Trình tự soi kèo bóng đá truoctran. Sử dụngPQSocket (Conn)
Để có được bộ mô tả
của ổ cắm bên dưới soi kèo bóng đá truoctran cơ sở dữ liệu. Vòng lặp
Do đó: nếuPQConnectPoll (Conn)
Trả về lần cuốipgres_polling_reading, đợi cho đến khi
ổ cắm đã sẵn sàng để đọc (như được chỉ ra bởiselect ()
, poll ()
hoặc hàm hệ thống tương tự).
Sau đó gọiPQConnectPoll (Conn)
soi kèo bóng đá truoctran lần nữa. Ngược lại,
nếu nhưPQConnectPoll (Conn)
Cuối cùng
đã trả vềPGRES_POLLING_WRITY,,
Chờ cho đến khi ổ cắm sẵn sàng để viết, sau đó gọiPQConnectPoll (Conn)
soi kèo bóng đá truoctran lần nữa.
Nếu bạn chưa gọiPQConnectPoll
, tức là, ngay sau khi
Gọi đếnPQConnectStart
,,
hành xử như thể nó đã trả về lần cuốiPGRES_POLLING_WRITY. Tiếp tục vòng lặp này
cho đến khiPQConnectPoll (Conn)
returnPGRES_POLLING_FAILED,,
Cho biết quy trình soi kèo bóng đá truoctran đã thất bại hoặcpgres_polling_ok, chỉ ra
soi kèo bóng đá truoctran đã được thực hiện thành công.
34267_34365pqstatus
. Nếu điều này choConnection_Bad, sau đó là soi kèo bóng đá truoctran
thủ tục đã thất bại; Nếu nó choConnection_ok
, thì soi kèo bóng đá truoctran là
sẵn sàng. Cả hai trạng thái này đều có thể phát hiện như nhau từ
Giá trị trả về củaPQConnectPoll
34772_35077
chờ soi kèo bóng đá truoctran được thực hiện.
soi kèo bóng đá truoctran OK; chờ gửi.
Đang chờ phản hồi từ máy chủ.
nhận được xác thực; chờ đợi phụ trợ Khởi động để hoàn thành.
Đàm phán mã hóa SSL.
Đàm phán tham số điều khiển môi trường Cài đặt.
Lưu ý rằng, mặc dù các hằng số này sẽ vẫn còn ( để duy trì khả năng tương thích), soi kèo bóng đá truoctran ứng dụng nên Không bao giờ dựa vào những điều này xảy ra theo soi kèo bóng đá truoctran thứ tự cụ thể, hoặc Tất cả, hoặc về tình trạng luôn là soi kèo bóng đá truoctran trong số đó giá trị được ghi lại. soi kèo bóng đá truoctran ứng dụng có thể làm soi kèo bóng đá truoctran cái gì đó như cái này:
Switch (pqstatus (Conn)) Case Connection_started: Phản hồi = "soi kèo bóng đá truoctran ..."; phá vỡ; Case Connection_Made: Phản hồi = "soi kèo bóng đá truoctran với máy chủ ..."; phá vỡ; . . . mặc định: Phản hồi = "soi kèo bóng đá truoctran ...";
TheConnect_TimeoutTham số soi kèo bóng đá truoctran bị bỏ qua khi sử dụngPQConnectPoll
; nó là ứng dụng
trách nhiệm quyết định xem soi kèo bóng đá truoctran lượng quá mức của
Thời gian đã trôi qua. Nếu không thì,PQConnectStart
theo sau làPQConnectPoll
Vòng lặp là
tương đương vớiPQConnectDB
.
Lưu ý rằng nếuPQConnectStart
Trả về soi kèo bóng đá truoctran người không null
con trỏ, bạn phải gọipqfinish
Khi bạn kết thúc với nó,
để xử lý cấu trúc và bất kỳ liên kết nào
Khối bộ nhớ. Điều này phải được thực hiện ngay cả khi soi kèo bóng đá truoctran
cố gắng thất bại hoặc bị bỏ rơi.
PQConnDefaults
Trả về các tùy chọn soi kèo bóng đá truoctran mặc định.
PQConnInFooption *PQConnDefaults (void); Cấu trúc typedef từ khóa *từ khóa; / * Từ khóa của tùy chọn */ char *envvar; / * Tên biến môi trường dự phòng */ char *biên soạn; / * Dự phòng được biên dịch trong giá trị mặc định */ char *val; / * Giá trị hiện tại của tùy chọn hoặc null */ Nhãn char *; / * Nhãn cho trường trong hộp thoại Connect */ char *vua; /* Ký tự để hiển thị cho trường này Trong một hộp thoại soi kèo bóng đá truoctran. Giá trị là: "" Hiển thị giá trị đã nhập như là "*" Trường mật khẩu - ẩn giá trị Tùy chọn gỡ lỗi "D" - không hiển thị theo mặc định */ int phân tán; / * Kích thước trường trong các ký tự cho hộp thoại */ PQConnInFooption;
Trả về mảng tùy chọn soi kèo bóng đá truoctran. Điều này có thể được sử dụng
Để xác định tất cả có thểPQConnectDB
Tùy chọn và dòng điện của chúng
giá trị mặc định. Giá trị trả về chỉ vào soi kèo bóng đá truoctran mảngPQConninFooptionCấu trúc,
soi kèo bóng đá truoctran thúc bằng một mục có nullTừ khóaCon trỏ. Con trỏ null là
trả lại nếu bộ nhớ không thể được phân bổ. Lưu ý rằng
Giá trị mặc định hiện tại (ValTrường) sẽ phụ thuộc vào các biến môi trường và các biến khác
bối cảnh. Người gọi phải xử lý dữ liệu tùy chọn soi kèo bóng đá truoctran
như chỉ đọc.
Sau khi xử lý mảng tùy chọn, hãy giải phóng nó bằng cách vượt qua
nó đếnPQConninFofree
. Nếu như
Điều này không được thực hiện, soi kèo bóng đá truoctran lượng nhỏ bộ nhớ bị rò rỉ cho
Mỗi cuộc gọi đếnPQConnDefaults
.
pqfinish
Đóng soi kèo bóng đá truoctran với máy chủ. Cũng giải phóng bộ nhớ Được sử dụng bởiPGConnĐối tượng.
void pqfinish (pgconn *Conn);
Lưu ý rằng ngay cả khi soi kèo bóng đá truoctran máy chủ không cố
(như được chỉ ra bởipqstatus
),
Ứng soi kèo bóng đá truoctran nên gọipqfinish
Để giải phóng bộ nhớ được sử soi kèo bóng đá truoctran bởiPGConnĐối tượng. ThePGConnCon trỏ không được sử soi kèo bóng đá truoctran lại
sau đópqfinish
đã được
gọi điện.
pqreset
Đặt lại kênh truyền thông cho máy chủ.
40895_40926
Hàm này sẽ đóng soi kèo bóng đá truoctran với máy chủ và cố gắng thiết lập lại một soi kèo bóng đá truoctran mới với cùng một Máy chủ, sử dụng tất cả các tham số giống nhau được sử dụng trước đây. Điều này có thể hữu ích cho việc khôi phục lỗi nếu hoạt động soi kèo bóng đá truoctran bị mất.
pqresetstart
pqresetpoll
Đặt lại kênh truyền thông cho máy chủ, trong A cách không chặn.
int pqresetstart (pgconn *Conn);
41664_41720
Các chức năng này sẽ đóng soi kèo bóng đá truoctran với
máy chủ và cố gắng thiết lập lại một soi kèo bóng đá truoctran mới với
cùng một máy chủ, sử dụng tất cả các tham số giống nhau trước đây
đã sử dụng. Điều này có thể hữu ích cho việc khôi phục lỗi nếu hoạt động
soi kèo bóng đá truoctran bị mất. Chúng khác vớipqreset
(ở trên) trong đó họ hành động trong soi kèo bóng đá truoctran
cách không chặn. Các chức năng này bị giống nhau
Hạn chế làPQConnectStart
vàPQConnectPoll
.
Để bắt đầu đặt lại soi kèo bóng đá truoctran, hãy gọipqresetstart
. Nếu nó trở lại 0,
Đặt lại đã thất bại. Nếu nó trả về 1, hãy bỏ phiếu đặt lại bằng cách sử soi kèo bóng đá truoctranpqresetpoll
Trong chính xác
theo cách mà bạn sẽ tạo soi kèo bóng đá truoctran bằng cách sử dụngPQConnectPoll
.