Phiên bản kèo bóng đá hôm nay và ngày mai được hỗ trợ:6.5
Tài liệu này dành cho phiên bản kèo bóng đá hôm nay và ngày mai được hỗ trợ của PostgreSQL.
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ế.

kèo bóng đá hôm nay và ngày mai đồng bộ Xử lý truy vấn

Hàm PQEXEC là đủ để gửi truy kèo bóng đá hôm nay và ngày mai đơn giản Ứng dụng đồng bộ. Nó có một vài thiếu sót lớn Tuy nhiên:

  • PQEXEC chờ hoàn thành truy vấn. Ứng dụng có thể có công việc khác phải làm (chẳng hạn như duy trì người dùng giao diện), trong trường hợp đó nó sẽ kèo bóng đá hôm nay và ngày mai muốn chặn chờ đợi phản hồi.

  • Vì điều khiển được chôn bên trong PQEXEC, rất khó cho Frontend để quyết định nó muốn cố gắng hủy bỏ truy vấn. (Nó có thể được thực hiện từ một trình xử lý tín hiệu, nhưng kèo bóng đá hôm nay và ngày mai nếu kèo bóng đá hôm nay và ngày mai thì.)

  • 5977_6146

Các ứng dụng kèo bóng đá hôm nay và ngày mai thích những hạn chế này có thể sử dụng các chức năng cơ bản mà PQEXEC được xây dựng từ: PQSendQuery và PQGetResult.

  • PQSendQueryGửi truy kèo bóng đá hôm nay và ngày mai choPostgreskèo bóng đá hôm nay và ngày mai chờ đợi Kết quả (s). Đúng được trả về nếu truy vấn thành công được gửi đi, sai nếu kèo bóng đá hôm nay và ngày mai (trong trường hợp đó, sử dụng pqerrormessage để Nhận thêm thông tin về sự thất bại).

    int pqsendQuery (pgconn *Conn,
                    const char *truy kèo bóng đá hôm nay và ngày mai);
    Sau khi gọi thành công PQSendQuery, hãy gọi PQGetResult One hoặc nhiều lần để có được kết quả truy vấn. PQSendQuery có thể kèo bóng đá hôm nay và ngày mai được gọi một lần nữa (trên cùng một kết nối) cho đến khi PQGetResult có trả về null, chỉ ra rằng truy vấn đã hoàn thành.
  • PQGetResultĐợi cái tiếp theo kết quả từ một pqsendquery trước đó, và trả lại nó. Null là trả lại khi truy vấn hoàn tất và sẽ kèo bóng đá hôm nay và ngày mai còn kết quả.

    PGRESULT *PQGetResult (PGConn *Conn);
    PQGetResult phải được gọi nhiều lần cho đến khi nó trả về NULL, chỉ ra rằng truy vấn được thực hiện. (Nếu được gọi khi kèo bóng đá hôm nay và ngày mai có truy vấn nào là Active, PQGetResult sẽ chỉ trả lại null cùng một lúc.) Mỗi ​​người kèo bóng đá hôm nay và ngày mai phải là null kết quả từ pqgetResult nên được xử lý bằng cách sử dụng cùng một pgresult Các chức năng của người phụ kiện được mô tả trước đây. Đừng quên giải phóng mỗi đối tượng kết quả với pqclear khi thực hiện với nó. Lưu ý rằng PQGetResult sẽ chỉ chặn nếu một truy vấn hoạt động và phản hồi cần thiết Dữ liệu chưa được đọc bởi pqconsumeinput.

Sử dụng PQSendQuery và PQGetResult giải quyết một trong những PQEXEC's Sự cố: Nếu chuỗi truy kèo bóng đá hôm nay và ngày mai chứa nhiều lệnh SQL, Kết quả của các lệnh đó có thể được lấy riêng lẻ. (Cái này cho phép một hình thức đơn giản của xử lý chồng chéo, nhân tiện: Frontend có thể xử lý kết quả của một truy kèo bóng đá hôm nay và ngày mai trong khi phần phụ trợ vẫn đang làm việc trên các truy kèo bóng đá hôm nay và ngày mai sau trong cùng một chuỗi truy kèo bóng đá hôm nay và ngày mai.) Tuy nhiên, việc gọi pqgetResult vẫn sẽ khiến frontend chặn Cho đến khi phụ trợ hoàn thành lệnh SQL tiếp theo. Điều này có thể được Tránh sử dụng đúng ba chức năng:

  • PQConsumeInputNếu đầu vào là Có sẵn từ phần phụ trợ, tiêu thụ nó.

    int pqconsumeinput (pgconn *Conn);
    PQConsumeInput thường trả về 1 chỉ ra "kèo bóng đá hôm nay và ngày mai có lỗi", nhưng trả về 0 nếu có một số loại rắc rối (trong trường hợp đó Pqerrormessage được đặt). Lưu ý rằng kết quả kèo bóng đá hôm nay và ngày mai cho biết liệu Bất kỳ dữ liệu đầu vào đã thực sự được thu thập. Sau khi gọi Pqconsumeinput, ứng dụng có thể kiểm tra pqisbusy và/hoặc PQNotifyes để xem nhà nước của họ đã thay đổi. PQConsumeInput có thể được gọi ngay cả khi ứng dụng kèo bóng đá hôm nay và ngày mai được chuẩn bị để đối phó với kết quả hoặc thông báo chỉ là chưa. Thói quen sẽ đọc có sẵn dữ liệu và lưu nó trong bộ đệm, do đó gây ra chọn (2) Dấu hiệu sẵn sàng đọc đi. Ứng dụng do đó có thể sử dụng Pqconsumeinput để xóa điều kiện chọn ngay lập tức, và sau đó Kiểm tra kết quả lúc rảnh rỗi.
  • pqisbusyTrả về đúng nếu truy vấn bận rộn, nghĩa là, PQGetResult sẽ chặn chờ nhập. MỘT Trả về sai cho biết PQGetResult có thể được gọi với đảm bảo kèo bóng đá hôm nay và ngày mai chặn.

    int pqisbusy (pgconn *Conn);
    PQISBusy sẽ kèo bóng đá hôm nay và ngày mai cố gắng đọc dữ liệu từ phụ trợ; do đó pqconsumeinput phải được gọi đầu tiên hoặc Trạng thái bận rộn sẽ kèo bóng đá hôm nay và ngày mai bao giờ kết thúc.
  • PQSocketlấy tệp Số mô tả cho ổ cắm kết nối phụ trợ. Một hợp lệ mô tả sẽ = 0; kết quả của -1 chỉ ra rằng kèo bóng đá hôm nay và ngày mai Kết nối phụ trợ hiện đang mở.

    int pqsocket (pgconn *Conn);
    PQSocket nên được sử dụng để có được ổ cắm phụ trợ Mô tả để chuẩn bị để thực hiện Chọn (2). Điều này cho phép một ứng dụng để chờ phản hồi phụ trợ hoặc khác điều kiện. Nếu kết quả chọn (2) chỉ ra rằng dữ kèo bóng đá hôm nay và ngày mai có thể là Đọc từ ổ cắm phụ trợ, sau đó PQConsumeInput nên được gọi để đọc dữ kèo bóng đá hôm nay và ngày mai; sau đó, pqisbusy, pqgetResult và/hoặc PQNotifyes có thể được sử dụng để xử lý phản hồi.

Một mặt trận điển hình sử dụng các chức năng này sẽ có vòng lặp chính sử dụng chọn (2) để chờ tất cả các điều kiện mà nó phải Trả lời. Một trong những điều kiện sẽ có sẵn từ phụ trợ, theo các điều khoản của Chọn là dữ liệu có thể đọc được trên tệp Mô tả được xác định bởi PQSocket. Khi vòng chính phát hiện đầu vào Sẵn sàng, nó nên gọi pqconsumeinput để đọc đầu vào. Nó có thể sau đó Gọi PQISBusy, tiếp theo là PQGetResult nếu PQISBusy trả về sai. Nó cũng có thể gọi pqnotifyes để phát hiện thông báo thông báo (xem "Thông báo kèo bóng đá hôm nay và ngày mai đồng bộ", bên dưới).

Frontend sử dụng pqsendQuery/pqGetResult cũng có thể cố gắng Hủy một truy kèo bóng đá hôm nay và ngày mai vẫn đang được xử lý bởi phụ trợ.

  • PQRequestCancel11200_11220PostgresTừ bỏ xử lý truy kèo bóng đá hôm nay và ngày mai hiện tại.

    int pqrequestCancel (pgconn *Conn);
    Giá trị trả về là đúng nếu yêu cầu hủy là Định cư thành công, sai nếu kèo bóng đá hôm nay và ngày mai. (Nếu kèo bóng đá hôm nay và ngày mai, pqerrormessage cho biết lý do kèo bóng đá hôm nay và ngày mai.) Công văn thành công kèo bóng đá hôm nay và ngày mai đảm bảo rằng Yêu cầu sẽ có bất kỳ hiệu lực, tuy nhiên. Bất kể sự trở lại Giá trị của PQRequestCancel, ứng dụng phải tiếp tục với Trình tự đọc kết quả bình thường bằng cách sử dụng pqgetResult. Nếu hủy bỏ có hiệu lực, truy vấn hiện tại sẽ chấm dứt sớm và trả về một kết quả lỗi. Nếu hủy bỏ thất bại (nói bởi vì phần phụ trợ đã được thực hiện xử lý truy vấn), sau đó sẽ kèo bóng đá hôm nay và ngày mai có kết quả hiển thị nào cả.

Lưu ý rằng nếu truy kèo bóng đá hôm nay và ngày mai hiện tại là một phần của giao dịch, hủy bỏ sẽ hủy bỏ toàn bộ giao dịch.

12098_12578