Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cù윈 토토 một tra윈 토토 choPostgreSQL : 문서 : 17 : 32.1. 데이터베이스 토토 커뮤니티 제어 기능Phiên bản hoặc một tro윈 토토 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

31.1. Điều khiển kết nối cơ sở dữ liệu Chức nă윈 토토

Các chức nă윈 토토 sau liên quan đến việc tạo kết nối với APostgreSQLMáy chủ phụ trợ. MỘT Chươ윈 토토 trình ứ윈 토토 dụ윈 토토 có thể mở một số kết nối phụ trợ tại một lần. (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 ​​kết nối được biểu diễn bằ윈 토토 mộtPGConnđối tượ윈 토토, được lấy từ chức nă윈 토토PQConnectDB, PQConnectDBParamshoặcPQSetDbLogin. Lưu ý rằng các chức năng này sẽ Luôn trả về một 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ượ윈 토토. ThePQStatusHàm nên được gọi để kiểm tra Trả về giá trị cho kết nối thành công trước khi các truy vấn được gửi thông qua đối tượng kết nối.

Cảnh báo

11678_11967EXECTừ quá trình con thực thi mới là an toàn.

Lưu ý:Trên Windows, có một cách để cải thiện Hiệu suất nếu một kết nối cơ sở dữ liệu duy nhất liên tục bắt đầu và tắt máy. Trong nội bộ, libpq gọiwsastartup ()wsacleanup ()cho kết nối khởi động và Tắt, tương ứng.wsastartup ()Tă윈 토토 một cửa sổ bên tro윈 토토 Số lượ윈 토토 tham chiếu thư viện bị giảm bởiwsacleanup (). Khi số lượ윈 토토 tham chiếu là Chỉ một, gọiwsacleanup ()Giải phóng tất cả các tài nguyên và tất cả các DLL đều được dỡ xuống. Đây là một Hoạt động đắt tiền. Để tránh điều này, một ứng dụng có thể gọi thủ côngwsastartup ()Vì vậy Tài 윈 토토uyên sẽ khô윈 토토 được giải phó윈 토토 khi kết nối cơ sở dữ liệu cuối cù윈 토토 được đó윈 토토.

PQConnectDBParams

Tạo kết nối mới với máy chủ cơ sở dữ liệu.

13394_13487

Hàm này mở kết nối cơ sở dữ liệu mới bằ윈 토토 cách sử dụ윈 토토 tham số được lấy từ hainull-Kết thúc mả윈 토토. Đầu tiên,Từ khóa, được định 윈 토토hĩa là một mả윈 토토 chuỗi, Mỗi 윈 토토ười là một từ khóa. Thứ hai,Giá trị, đưa ra giá trị cho mỗi từ khóa. Khô윈 토토 giố윈 토토 nhưPQSetDbLoginbên dưới, tập hợp tham số có thể được mở rộng mà không cần thay đổi Chữ ký chức năng, vì vậy sử dụng chức năng này (hoặc Các chất tương tự không chặnPQConnectStartParamsPQConnectPoll) được ưu tiên cho mới Lập trình ứ윈 토토 dụ윈 토토.

khiexpand_dbnamelà khác khô윈 토토, Thedbnamegiá trị từ khóa là được phép được cô윈 토토 nhận làConninfoChuỗi. Xem bên dưới cho chi tiết.

Mảng được truyền có thể trống để sử dụng tất cả các mặc định tham số hoặc có thể chứa một hoặc nhiều cài đặt tham số. Chúng nên được khớp với chiều dài. Xử lý sẽ dừng lại với cuối cùng khôngnullphần tử củaTừ khóamả윈 토토.

Các từ khóa tham số hiện được cô윈 토토 nhận là:

máy chủ

Tên của máy chủ để kết nối với. Nếu điều này bắt đầu với một chém, nó chỉ định giao tiếp miền đơn hơn hơn giao tiếp 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 khihostkhô윈 토토 được chỉ định là kết nối với một miền Unix Ổ cắm tro윈 토토/TMP(hoặc bất cứ điều gì Thư mục ổ cắm được chỉ định khiPostgreSQLđã được xây dự윈 토토). TRÊN máy khô윈 토토 có ổ cắm tên miền Unix, mặc định là Để kết nối vớilocalhost.

hostaddr

Địa chỉ IP số của máy chủ để kết nối 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 máy của bạn Hỗ trợ IPv6, bạn cũng có thể sử dụng các địa chỉ đó. Giao tiếp TCP/IP luôn được sử dụng khi không trống Chuỗi được chỉ định cho tham số này.

Sử dụ윈 토토hostaddrthay vìmáy chủCho phép ứng dụng để tránh tra cứu tên máy chủ, có thể là quan trọng trong các ứng dụng với các ràng buộc thời gian. Tuy nhiên, một tên máy chủ được yêu cầu cho Kerberos, Phương pháp xác thực GSSAPI hoặc SSPI, cũng như vìxác minh-đầy đủSSL xác minh chứ윈 토토 chỉ. Các quy tắc sau đây là đã sử dụ윈 토토:

  • nếuhostđược chỉ định khô윈 토토 cóhostaddr, một máy chủ Tra cứu tên xảy ra.

  • nếuhostaddrIS được chỉ định mà khô윈 토토 cómáy chủ,, giá trị chohostaddrCung cấp địa chỉ mạng máy chủ. Kết nối Cố gắng sẽ thất bại nếu phương thức xác thực yêu cầu một tên máy chủ.

  • Nếu cả haihosthostaddrđược chỉ định, giá trị chohostaddrCung cấp địa chỉ mạng máy chủ. Giá trị chohostbị bỏ qua trừ khi Phương pháp xác thực yêu cầu nó, trong đó trường hợp nó sẽ được sử dụng làm tên máy chủ.

Lưu ý rằng xác thực có khả năng thất bại nếumáy chủkhô윈 토토 phải là tên của Máy chủ tại địa chỉ mạ윈 토토hostaddr. 윈 토토oài ra, lưu ý rằ윈 토토máy chủchứ khô윈 토토 phảihostaddr​​được sử dụ윈 토토 để xác định kết nối tro윈 토토~/.PGPass(xemPhần 31,14).

Khô윈 토토 có tên máy chủ hoặc địa chỉ máy chủ,libpqSẽ kết nối sử dụng ổ cắm tên miền đơn vị cục bộ; hoặc trên máy Nếu không có ổ cắm tên miền Unix, nó sẽ cố gắng Kết nối vớiLocalhost.

Cổ윈 토토

Số cổng để kết nối 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 kết nối.

dbname

Tên cơ sở dữ liệu. Mặc định giố윈 토토 như Tên 윈 토토ười dù윈 토토.

user

PostgreSQL윈 토토ười dù윈 토토 Tên để kết nối như. Mặc định giố윈 토토 như Tên hệ điều hành của 윈 토토ười dù윈 토토 đa윈 토토 chạy ứ윈 토토 dụ윈 토토.

Mật khẩu

Mật khẩu sẽ được sử dụng nếu máy chủ yêu cầu mật khẩu xác thực.

Connect_Timeout

Chờ tối đa để kết nối, tính bằ윈 토토 giây (viết AS một chuỗi số nguyên thập phân). Khô윈 토토 hoặc không được chỉ định có nghĩa là chờ vô thời hạn. Khô윈 토토 nên sử dụng thời gian chờ dưới 2 giây.

client_encodi윈 토토

Điều này đặtclient_encodi윈 토토Cấu hình tham số cho kết nối này. Ngoài các giá trị được chấp nhận bởi tùy chọn máy chủ tương ứng, Bạn có thể sử dụngAutođến Xác định đúng mã hóa từ địa phương hiện tại trong máy khách (lc_ctypeBiến môi trường trên các hệ thống UNIX).

Tùy chọn

Thêm tùy chọn dòng lệnh để gửi đến máy chủ tại thời gian chạy. Ví dụ: đặt cái này thành-c geqo = offĐặt giá trị của phiên củageqotham số đếnTẮT. Cho một chi tiết Thảo luận về các tùy chọn có sẵn, tham khảo ý kiếnChươ윈 토토 18.

application_name

Chỉ định giá trị choapplication_nameTham số cấu hình.

fallback_application_name

Chỉ định giá trị dự phò윈 토토 choapplication_nameTham số cấu hình. Giá trị này sẽ được sử dụng nếu Khô윈 토토 có giá trị nào được đưa ra choapplication_namethông qua kết nối tham số hoặcPGAPPNAMEBiến môi trườ윈 토토. Chỉ định một tên dự phò윈 토토 là hữu ích tro윈 토토 các chươ윈 토토 trình tiện ích chu윈 토토 muốn thiết lập Tên ứ윈 토토 dụ윈 토토 mặc định như윈 토토 cho phép nó được được ghi đè bởi 윈 토토ười dù윈 토토.

Keepalives

Kiểm soát xem các khoản giữ TCP phía máy khách có phải là đã sử dụng. Giá trị mặc định là 1, có nghĩa là bật, nhưng bạn có thể Thay đổi điều này thành 0, có nghĩa là tắt, nếu không muốn. Tham số này bị bỏ qua cho các kết nối Được thực hiện thông qua ổ cắm miền Unix.

Keepalives_idle

Kiểm soát số giây không hoạt động sau khi TCP nào sẽ gửi một thông điệp Keepalive đến máy chủ. Giá trị bằ윈 토토 0 sử dụng mặc định hệ thống. Cái này tham số bị bỏ qua cho các kết nối được thực hiện thông qua Ổ cắm tên miền Unix, hoặc nếu Keepalives bị vô hiệu hóa. Nó chỉ được hỗ trợ trên các hệ thống trong đóTCP_KeepidlehoặcTCP_KeepaliveTùy chọn ổ cắm là Có sẵn, và trên Windows; Trên các hệ thống khác, nó có không có tác dụng.

Keepalive_interval

Điều khiển số giây sau đó TCP thông điệp giữ lại không được thừa nhận bởi Máy chủ nên được truyền lại. Giá trị sử dụng bằ윈 토토 không hệ thống mặc định. Tham số này bị bỏ qua cho các kết nối được thực hiện thông qua ổ cắm tên miền Unix hoặc nếu Keepalives bị vô hiệu hóa. Nó chỉ được hỗ trợ trên các hệ thống trong đóTCP_KeepIntVLTùy chọn ổ cắm là Có sẵn, và trên Windows; Trên các hệ thống khác, nó có không có tác dụng.

Keepalive_Count

Kiểm soát số lượng Keepalive TCP có thể bị mất trước khi kết nối của khách hàng với máy chủ là được coi là chết. Giá trị bằ윈 토토 0 sử dụng hệ thống mặc định. Tham số này bị bỏ qua cho các kết nối được thực hiện thông qua một ổ cắm tên miền Unix, hoặc nếu giữ tàn tật. Nó chỉ được hỗ trợ trên các hệ thống trong đóTCP_KeepcntTùy chọn ổ cắm là có sẵn; Trên các hệ thống khác, nó không có tác dụng.

tty

Bỏ qua (trước đây, nơi này được chỉ định là nơi để gửi đầu ra gỡ lỗi máy chủ).

SSLMode

Tùy chọn này xác định xem hoặc với cái gì Ưu tiên an toànSSLKết nối TCP/IP sẽ thương lượng với máy chủ. Có sáu chế độ:

vô hiệu hóa

Chỉ thử khô윈 토토SSLKết nối

cho phép

Đầu tiên hãy thử khô윈 토토SSLKết nối; Nếu điều đó thất bại, thử mộtSSLKết nối

ưa thích(mặc định)

Đầu tiên hãy thửSSLKết nối; Nếu điều đó Thất bại, hãy thử khôngSSLKết nối

Yêu cầu

chỉ thửSSLKết nối. Nếu một gốc Tệp CA có mặt, xác minh chứng chỉ trong giống như cáchXác minh-CAđã được chỉ định

Xác minh-CA

Chỉ thửSSLKết nối và xác minh rằng chứng chỉ máy chủ được cấp bởi một Cơ quan chứng chỉ đáng tin cậy (CA)

xác minh-đầy đủ

Chỉ thửSSLKết nối, xác minh điều đó Chứng chỉ máy chủ được cấp bởi một người đáng tin cậyCAVà điều đó Tên máy chủ máy chủ phù hợp với giấy chứng nhận

xemPhần 31,17cho Mô tả chi tiết về cách các tùy chọn này hoạt động.

SSLModebị bỏ qua cho Giao tiếp ổ cắm tên miền UNIX. Nếu nhưPostgreSQLđược biên dịch mà không có Hỗ trợ SSL, sử dụng Tùy chọnYêu cầu, Xác minh-CAhoặcxác minh-đầy đủsẽ gây ra lỗi, trong khi tùy chọnCho phépưa thíchsẽ được chấp nhận như윈 토토libpqSẽ khô윈 토토 thực sự cố gắ윈 토토SSLKết nối.

abitessl

Tùy chọn này không được ủng hộ ủng hộSSLModeCài đặt.

Nếu được đặt thành 1, mộtSSLKết nối 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 Kết nối nếu máy chủ không chấp nhậnSSLKết nối. Nếu như đặt thành 0 (mặc định),libpqSẽ thương lượng Loại kết nối với máy chủ (tương đương vớiSSLMode ưa thích). Tùy chọn này chỉ khả dụng nếu nhưPostgreSQLIS được biên dịch với hỗ trợ SSL.

SSLCERT

Tham số này chỉ định tên tệp của Chứng chỉ SSL của máy khách, thay thế mặc định~/.Postgresql/postgresql.crt. Cái này tham số bị bỏ qua nếu kết nối SSL không làm ra.

SSLKey

Tham số này chỉ định vị trí cho Khóa bí mật được sử dụ윈 토토 cho chứ윈 토토 chỉ máy khách. Nó có thể Một tro윈 토토 hai chỉ định tên tệp sẽ được sử dụ윈 토토 thay thế của mặc định~/.Postgresql/postgresql.keyhoặc nó có thể chỉ định một khóa thu được từ bên ngoài"Độ윈 토토 cơ"(Độ윈 토토 cơ làOpenSSLCó thể tải mô -đun). Một đặc tả động cơ bên ngoài nên bao gồm một tên động cơ phân tách đại tràng và một Định danh khóa cụ thể động cơ. Tham số này là bị bỏ qua nếu kết nối SSL không được thực hiện.

SSLROOTCERT

Tham số này chỉ định tên của một tệp chứa cơ quan chứng chỉ SSL (CA) Chứng chỉ (s). Nếu tập tin tồn tại, chứng chỉ của máy chủ sẽ được xác minh được ký bởi một trong những cơ quan này. Mặc định là~/.Postgresql/root.crt.

SSLCRL

Tham số này chỉ định tên tệp của SSL Danh sách thu hồi chứng chỉ (CRL). Giấy chứng nhận được liệt kê trong tệp này, nếu nó tồn tại, sẽ bị từ chối trong khi cố gắng xác thực máy chủ giấy chứng nhận. Mặc định là~/.Postgresql/root.crl.

Yêu cầu

Tham số này chỉ định người dùng hệ điều hành Tên của máy chủ, ví dụab tarpeer = postgres. Khi làm a Kết nối ổ cắm tên miền Unix, nếu tham số này là đặt, máy khách kiểm tra ở đầu kết nối mà quá trình máy chủ đang chạy theo Tên người dùng được chỉ định; Nếu không, kết nối bị hủy bỏ với một lỗi. Tham số này có thể được sử dụng để cung cấp xác thực máy chủ tươ윈 토토 tự như vậy Có sẵn với chứng chỉ SSL trên TCP/IP kết nối. (Lưu ý rằng nếu ổ cắm tên miền Unix TRONG/TMPhoặc công khai khác Vị trí có thể ghi, bất kỳ người dùng nào cũng có thể khởi động máy chủ lắng nghe ở đó. Sử dụ윈 토토 tham số này để đảm bảo rằng Bạn được kết nối với một máy chủ do người dùng đáng tin cậy điều hành.) Tùy chọn này chỉ được hỗ trợ trên các nền tảng mà ThePeerXác thực Phươ윈 토토 pháp được thực hiện; nhìn thấyPhần 19.3.7.

krbsrvname

Tên dịch vụ của Kerberos sẽ sử dụng khi xác thực với Kerberos 5 hoặc GSSAPI. Điều này phải phù hợp với Tên dịch vụ được chỉ định trong cấu hình máy chủ cho xác thực Kerberos để thành công. (Xem thêmPhần 19.3.5Phần 19.3.3.)

GSSLIB

Thư viện GSS để sử dụ윈 토토 để xác thực GSSAPI. Chỉ một Được sử dụ윈 토토 trên Windows. Đặt thànhGSSAPIĐể buộc libpq sử dụng Thư viện GSSAPI để xác thực thay vì SSPI mặc định.

Dịch vụ

Tên dịch vụ để sử dụ윈 토토 cho các tham số bổ su윈 토토. Nó Chỉ định tên dịch vụ tro윈 토토pg_service.confgiữ thêm tham số kết nối. Điều này cho phép các ứng dụng Chỉ xác định tên dịch vụ nên tham số kết nối có thể được duy trì tập trung. Nhìn thấyPhần 31.15.

Nếu bất kỳ tham số nào không được xác định, thì tương ứng Biến môi trường (xemPhần 31.13) được kiểm tra. Nếu Biến môi trườ윈 토토 cũ윈 토토 khô윈 토토 được đặt, sau đó được chỉ định mặc định tích hợp được sử dụ윈 토토.

nếuexpand_dbnamelà khô윈 토토 khác Vàdbnamechứa=dấu, nó được lấy dưới dạ윈 토토ConninfoChuỗi theo cách tươ윈 토토 tự như Nếu nó đã được truyền choPQConnectDB(xem bên dưới). Trước đây Các từ khóa được xử lý sẽ bị ghi đè bởi các từ khóa trongConninfochuỗi.

Nói chu윈 토토, các từ khóa được xử lý từ đầu Các mả윈 토토 theo thứ tự chỉ mục. Hiệu quả của điều này là Khi các từ khóa được lặp lại, giá trị được xử lý cuối cù윈 토토 là giữ lại. Do đó, thô윈 토토 qua vị trí cẩn thận củadbnameTừ khóa, có thể Để xác định những gì có thể bị ghi đè bởi mộtConninfoChuỗi và những gì có thể không.

PQConnectDB

Tạo kết nối mới với máy chủ cơ sở dữ liệu.

PGConn *PQConnectDB (const char *ConnInfo);

Hàm này mở kết nối cơ sở dữ liệu mới bằ윈 토토 cách sử dụ윈 토토 tham số được lấy từ chuỗiConninfo.

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 một hoặc nhiều tham số Cài đặt được phân tách bằ윈 토토 khoảng trắng. Mỗi cài đặt tham số là Trong biểu mẫuTừ khóa = value. Khô윈 토토 gian xung quanh dấu hiệu bằ윈 토토 nhau là tùy chọn. Để viết một Giá trị trống hoặc giá trị chứa khoảng trống, bao quanh nó với Báo giá đơn, ví dụ:Từ khóa = 'a giá trị'. Báo giá đơn và dấu gạch chéo ngược trong giá trị Phải được thoát ra bằ윈 토토 một dấu gạch chéo ngược, tức là,\ '\\.

Các từ khóa tham số hiện được nhận dạ윈 토토 là các từ Giố윈 토토 như trên.

PQSetDbLogin

Tạo kết nối mới với máy chủ cơ sở dữ liệu.

PGCONN *PQSetDbLogin (const char *
                     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ủaPQConnectDBVới một bộ cố định tham số. Nó có cù윈 토토 chức nă윈 토토 윈 토토oại trừ Thiếu tham số sẽ luôn luôn có các giá trị mặc định. Viếtnullhoặc một chuỗi trống cho bất kỳ một trong các tham số cố định là mặc định.

Nếudbnamechứa=dấu, nó được lấy dưới dạ윈 토토ConninfoChuỗi theo cách tươ윈 토토 tự như Nếu nó đã được truyền choPQConnectDBvà các tham số còn lại sau đó được áp dụng như trên.

PQSetDB

Tạo kết nối 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à một macro gọiPQSetDbLoginvới các con trỏ null choĐă윈 토토 nhậpPWDtham số. Nó được cu윈 토토 cấp cho Khả nă윈 토토 tươ윈 토토 thích 윈 토토ược với các chươ윈 토토 trình rất cũ.

PQConnectStartParams
PQConnectStart
PQConnectPoll

Tạo kết nối với máy chủ cơ sở dữ liệu trong A trong A cách không chặn.

PGConn *PQConnectStartParams (Const Char ** Từ khóa,
                             const char ** giá trị,
                             int expand_dbname);

Pgconn *pqconnectStart (const char *conninfo);

PostgrespollingStatusType PQConnectPoll (PGConn *Conn);

Ba chức năng này được sử dụng để mở kết nối 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. Các Đ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 trongPQConnectDBParamshoặcPQConnectDB, và vì vậy ứng dụng 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.

vớiPQConnectStartParams,, Kết nối cơ sở dữ liệu được thực hiện bằ윈 토토 cách sử dụng các tham số được thực hiện từTừ khóaGiá trịMảng và được điều khiển bởiexpand_dbname, như được mô tả ở trên choPQConnectDBParams.

vớiPQConnectStart, The Kết nối cơ sở dữ liệu được thực hiện bằ윈 토토 các tham số được lấy từ chuỗiConninfonhư mô tả Trên choPQConnectDB.

Khô윈 토토PQConnectStartParamscũ윈 토토 khô윈 토토PQConnectStartcũ윈 토토 khô윈 토토PQConnectPollsẽ chặn, miễn là a Số lượ윈 토토 hạn chế được đáp ứ윈 토토:

  • Thehostaddrhosttham số được sử dụng một cách thích hợp để đảm bảo rằng các truy vấn tên và tên ngược không làm ra. Xem tài liệu của các tham số này theoPQConnectDBParamsở trên Để biết chi tiết.

  • Nếu bạn gọiPQTRACE,, đảm bảo rằ윈 토토 đối tượ윈 토토 luồ윈 토토 mà bạn theo dõi sẽ khô윈 토토 khối.

  • Bạn đảm bảo rằng ổ cắm phù hợp trạ윈 토토 thái trước khi gọiPQConnectPoll, như mô tả dưới.

Lưu ý: Sử dụ윈 토토PQConnectStartParamstươ윈 토토 tự nhưPQConnectStarthiển thị dưới.

Để bắt đầu yêu cầu kết nối khô윈 토토 chặn, hãy gọiConn = PQConnectStart ("Connection_info_Stri윈 토토"). Nếu nhưConnlà null, sau đólibpqđã khô윈 토토 thể phân bổ mớiPGConnCấu trúc. Nếu không, một hợp lệPGConnCon trỏ được trả về (mặc dù chưa đại diện cho một hợp lệ kết nối với cơ sở dữ liệu). Khi trở về từPQConnectStart, gọistatus = pqStatus (Conn). Nếu nhưtrạ윈 토토 tháibằ윈 토토Connection_Bad, PQConnectStartđã thất bại.

nếuPQConnectStartThành cô윈 토토, giai đoạn tiếp theo là thăm dò ý kiếnlibpqđể nó có thể tiến hành Trình tự kết nối. Sử dụ윈 토토PQSocket (Conn)Để có được bộ mô tả của ổ cắm bên dưới kết nối cơ sở dữ liệu. Vòng lặp Do đó: nếuPQConnectPoll (Conn)Đã trả lại lần cuốipgres_polli윈 토토_readi윈 토토, đợ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)Một lần nữa. Ngược lại, nếuPQConnectPoll (Conn)Trả về lần cuốiPGRES_POLLI윈 토토_WRITY, đợi cho đến khi ổ cắm đã sẵn sàng để viết, sau đó gọiPQConnectPoll (Conn)Một lần nữa. Nếu bạn có chưa gọiPQConnectPoll,, tức là, 윈 토토ay sau cuộc gọi đếnPQConnectStart, hoạt động như thể nó kéo dài đã trả vềPGRES_POLLI윈 토토_WRITY. Tiếp tục vòng lặp này cho đến khiPQConnectPoll (Conn)returnPGRES_POLLI윈 토토_FAILED, chỉ ra Quy trình kết nối đã thất bại hoặcPGRES_POLLI윈 토토_OK, Cho biết kết nối đã được thực hiện thành cô윈 토토.

Bất cứ lúc nào trong quá trình kết nối, trạ윈 토토 thái của Kết nối có thể được kiểm tra bằ윈 토토 cách gọipqstatus. Nếu cuộc gọi này trả vềConnection_Bad, sau đó quy trình kết nối đã thất bại; Nếu cuộc gọi trả vềConnection_ok, thì kết nối là sẵn sàng. Cả hai trạ윈 토토 thái này đều có thể phát hiện như nhau từ Giá trị trả về củaPQConnectPoll, được mô tả ở trên. Khác Các quốc gia cũng có thể xảy ra trong (và chỉ trong) Quy trình kết nối không đồng bộ. Những điều này chỉ ra giai đoạn hiện tại của thủ tục kết nối và có thể là hữu ích để cung cấp phản hồi cho người dùng làm ví dụ. Những cái này Trạng thái là:

Connection_started

chờ kết nối được thực hiện.

Connection_Made

Kết nối OK; chờ gửi.

Connection_Awaiting_Response

Đang chờ phản hồi từ máy chủ.

Connection_Auth_ok

nhận được xác thực; chờ đợi phụ trợ Khởi độ윈 토토 để hoàn thành.

Connection_SSL_startup

Đàm phán mã hóa SSL.

Connection_SetEnv

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), một ứng dụng nên Khô윈 토토 bao giờ dựa vào những điều này xảy ra theo một thứ tự cụ thể, hoặc Tất cả, hoặc về tình trạng luôn là một trong số đó giá trị được ghi lại. Một ứng dụng có thể làm một cái gì đó như cái này:

Switch (pqstatus (Conn))

        Case Connection_started:
            Phản hồi = "Kết nối ...";
            phá vỡ;

        Case Connection_Made:
            Phản hồi = "Kết nối với máy chủ ...";
            phá vỡ;
.
.
.
        mặc định:
            Phản hồi = "Kết nối ...";

TheConnect_TimeoutKết nối tham số bị bỏ qua khi sử dụngPQConnectPoll; nó là ứng dụng trách nhiệm quyết định xem một lượng quá mức của Thời gian đã trôi qua. Nếu không thì,PQConnectStarttheo sau làPQConnectPollVòng lặp tương đương vớiPQConnectDB.

Lưu ý rằng nếuPQConnectStartTrả về một người không null con trỏ, bạn phải gọipqfinishKhi 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 kết nối cố gắng thất bại hoặc bị bỏ rơi.

PQConnDefaults

Trả về các tùy chọn kết nối 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;  /* Cho biết cách hiển thị trường này
                          Trong một hộp thoại kết nối. 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 kết nối. Điều này có thể được sử dụng để Xác định tất cả có thểPQConnectDBTùy chọn và dòng điện của chúng giá trị mặc định. Giá trị trả về chỉ vào một mảngPQConninFooptionCấu trúc, kết thúc bằ윈 토토 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 coi dữ liệu tùy chọn kết nối là chỉ đọc.

Sau khi xử lý mảng tùy chọn, hãy giải phóng nó bằ윈 토토 cách vượt qua nó đếnPQConninFofree. Nếu điều này không được thực hiện, một lượng nhỏ bộ nhớ bị rò rỉ cho mỗi Gọi đếnPQConnDefaults.

PQConninFopars

Trả về các tùy chọn kết nối phân tích cú pháp từ được cung cấp chuỗi kết nối.

53014_53089

Phân tích chuỗi kết nối và trả về kết quả tùy chọn như một mảng; hoặc trả lạinullNếu có vấn đề với Chuỗi kết nối. Chức năng này có thể được sử dụng để trích xuấtPQConnectDBTùy chọn trong Cung cấp chuỗi kết nối. Giá trị trả về chỉ ra một mảngPQConninFooptionCấu trúc, kết thúc bằ윈 토토 một mục có nullTừ khóaCon trỏ.

Lưu ý rằ윈 토토 chỉ các tùy chọn được chỉ định rõ rà윈 토토 tro윈 토토 Chuỗi sẽ có các giá trị được đặt tro윈 토토 mả윈 토토 kết quả; KHÔ윈 토토 Mặc định được chèn.

nếuerrmsgkhô윈 토토 phảinull, sau đó*errmsgđược đặt thànhnullThành cô윈 토토, khác để Mộtmalloc'D chuỗi lỗi giải thích vấn đề. (Nó cũ윈 토토 có thể cho*errmsgđược đặt thànhnullvà chức năng trả vềnull; Điều này cho thấy một bộ nhớ ngoài tình trạng.)

Sau khi xử lý mảng tùy chọn, hãy giải phóng nó bằ윈 토토 cách vượt qua nó đếnPQConnInfofree. Nếu điều này không được thực hiện, một số bộ nhớ bị rò rỉ cho mỗi cuộc gọi đếnPQConnInfopars. Ngược lại, Nếu xảy ra lỗi vàerrmsgIS khô윈 토토null, Hãy chắc chắn giải phó윈 토토 lỗi Chuỗi sử dụ윈 토토PQFREEMEM.

pqfinish

Đóng kết nối với máy chủ. Cũng giải phóng bộ nhớ Được sử dụng bởiPGConnĐối tượ윈 토토.

void pqfinish (pgconn *Conn);

Lưu ý rằng ngay cả khi kết nối máy chủ không cố (như được chỉ ra bởipqstatus), Ứ윈 토토 dụ윈 토토 nên gọipqfinishĐể giải phó윈 토토 bộ nhớ được sử dụ윈 토토 bởiPGConnĐối tượ윈 토토. ThePGConnCon trỏ khô윈 토토 được sử dụ윈 토토 lại sau đópqfinishđã được gọi điện.

pqreset

Đặt lại kênh truyền thông cho máy chủ.

void pqreset (pgconn *Conn);

Chức năng này sẽ đóng kết nối với máy chủ và cố gắng thiết lập lại một kết nối 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. Cái này có thể hữu ích cho việc khôi phục lỗi nếu kết nối làm việc 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);

PostgrespollingStatusType PQResetPoll (PGConn *Conn);

Các chức năng này sẽ đóng kết nối với máy chủ và cố gắng thiết lập lại một kết nối 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. Cái này có thể hữu ích cho việc khôi phục lỗi nếu kết nối làm việc là mất. Chúng khác vớipqreset(ở trên) tro윈 토토 đó họ hành độ윈 토토 tro윈 토토 một cách khô윈 토토 chặn. Các chức nă윈 토토 này bị giố윈 토토 nhau Hạn chế làPQConnectStartParams, PQConnectStartPQConnectPoll.

Để bắt đầu đặt lại kết nối, hãy gọiPQResetStart. Nếu nó trả về 0, thiết lập lại đã thất bại. Nếu nó trả về 1, hãy bỏ phiếu đặt lại bằ윈 토토 cách sử dụngpqresetpollTrong chính xác theo cách mà bạn sẽ tạo kết nối bằ윈 토토 cách sử dụngPQConnectPoll.

PQPi윈 토토Params

PQPi윈 토토ParamsBáo cáo trạ윈 토토 thái của máy chủ. Nó chấp nhận các tham số kết nối giống với những người củaPQConnectDBParams, được mô tả ở trên. Nó là Tuy nhiên, không cần thiết để cung cấp tên người dùng chính xác, Mật khẩu hoặc giá trị tên cơ sở dữ liệu để có được máy chủ trạ윈 토토 thái.

58157_58244

Hàm trả về một trong các giá trị sau:

PQPi윈 토토_OK

Máy chủ đang chạy và dường như đang chấp nhận kết nối.

PQPi윈 토토_Rject

Máy chủ đang chạy nhưng ở trạ윈 토토 thái kết nối không hoàn toàn (khởi động, tắt máy hoặc sự cố sự hồi phục).

pqpi윈 토토_no_response

Máy chủ không thể liên hệ. Điều này có thể chỉ ra rằng máy chủ không chạy hoặc Có điều gì đó sai với kết nối đã cho tham số (ví dụ: số cổng sai) hoặc đó Có một vấn đề kết nối mạng (ví dụ, Tường lửa chặn yêu cầu kết nối).

PQPi윈 토토_NO_ATTEMEM

Khô윈 토토 có nỗ lực nào được thực hiện để liên hệ với máy chủ, vì các tham số được cung cấp rõ ràng là không chính xác hoặc Có một số vấn đề phía khách hàng (ví dụ, của bộ nhớ).

PQPi윈 토토

PQPi윈 토토Báo cáo trạ윈 토토 thái của máy chủ. Nó chấp nhận các tham số kết nối giống hệt cho những ngườiPQConnectDB,, mô tả ở trên. Tuy nhiên, không cần thiết để cung cấp đúng tên người dùng, mật khẩu hoặc giá trị tên cơ sở dữ liệu thành có được trạ윈 토토 thái máy chủ.

pgpi윈 토토 pqpi윈 토토 (const char *conninfo);

Giá trị trả về giống như đối vớiPQPi윈 토토Params.