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

36.2. Quản lý kèo chấp bóng đá hôm nay cơ sở dữ liệu

Phần này mô tả cách mở, đóng và chuyển đổi kèo chấp bóng đá hôm nay cơ sở dữ liệu.

36.2.1. kèo chấp bóng đá hôm nay với máy chủ cơ sở dữ liệu

Một kèo chấp bóng đá hôm nay với cơ sở dữ liệu bằng cách sử dụng câu lệnh sau:

EXEC SQL kèo chấp bóng đá hôm nay vớiTarget[AStên kèo chấp bóng đá hôm nay] [usertên người dùng];

TheTargetcó thể được chỉ định theo các cách sau:

  • dbname[@tên máy chủ] [:Cổng]
  • TCP: PostgreSQL: //tên máy chủ[:Cổng] [/dbname] [?Tùy chọn]
  • UNIX: POSTGRESQL: // LocalHost [:Cổng] [/dbname] [?Tùy chọn]
  • Một chuỗi kèo chấp bóng đá hôm nay theo nghĩa đen chứa một trong các biểu mẫu trên
  • tham chiếu đến biến ký tự chứa một trong các biểu mẫu trên (xem ví dụ)
  • Mặc định

Mục tiêu kèo chấp bóng đá hôm naymặc địnhBắt đầu kèo chấp bóng đá hôm nay với cơ sở dữ liệu mặc định dưới tên người dùng mặc định. Không có tên người dùng hoặc tên kèo chấp bóng đá hôm nay riêng biệt có thể được chỉ định trong trường hợp đó.

Nếu bạn chỉ định trực tiếp mục tiêu kèo chấp bóng đá hôm nay (nghĩa là không phải là một chuỗi theo nghĩa đen hoặc tham chiếu biến), thì các thành phần của mục tiêu được truyền qua phân tích SQL bình thường; Điều này có nghĩa là, ví dụ,tên máy chủphải trông giống như một hoặc nhiều định danh kèo chấp bóng đá hôm nay được phân tách bằng các dấu chấm và các định danh đó sẽ được xếp lại trừ khi được trích dẫn kép. Giá trị của bất kỳTùy chọnPhải là định danh SQL, số nguyên hoặc tài liệu tham khảo biến. Tất nhiên, bạn có thể đặt gần như bất cứ thứ gì vào số định danh SQL bằng cách trích dẫn gấp đôi. Trong thực tế, có thể ít dễ bị lỗi khi sử dụng một chuỗi (một trích xuất đơn) theo nghĩa đen hoặc một tham chiếu biến hơn để viết trực tiếp mục tiêu kèo chấp bóng đá hôm nay.

Cũng có những cách khác nhau để chỉ định tên người dùng:

  • 14547_14557
  • tên người dùng/Mật khẩu
  • tên người dùngĐược xác định bởiMật khẩu
  • Tên người dùngsử dụngMật khẩu

Như trên, các tham sốtên người dùngMật khẩucó thể là định danh kèo chấp bóng đá hôm nay, chuỗi kèo chấp bóng đá hôm nay theo nghĩa đen hoặc tham chiếu đến biến ký tự.

Nếu mục tiêu kèo chấp bóng đá hôm nay bao gồm bất kỳ nàoTùy chọn, những người bao gồmTừ khóa15533_15536giá trịThông số kỹ thuật được phân tách bởi ampersands (&). Các từ khóa được phép là những từ giống nhau được nhận ra bởilibpq(xemPhần 34.1.2). Không gian bị bỏ qua trước bất kỳTừ khóahoặcgiá trị, mặc dù không trong hoặc sau một. Lưu ý rằng không có cách nào để viết&trong Agiá trị.

16196_16256UNIX:tiền tố), tên máy chủ phải chính xácLocalhost. Để chọn thư mục ổ cắm không mặc định, hãy viết tên đường dẫn của thư mục làm giá trị củahostTùy chọn trongTùy chọnmột phần của mục tiêu.

Thetên kèo chấp bóng đá hôm nay16649_16925

Đây là một số ví dụ vềkèo chấp bóng đá hôm nayCâu lệnh:

EXEC SQL kèo chấp bóng đá hôm nay với mydb@sql.mydomain.com;

EXEC SQL kèo chấp bóng đá hôm nay với TCP: Postgresql: //sql.mydomain.com/mydb với tư cách là người dùng myConnection John;

EXEC SQL bắt đầu phần khai báo;
const char *target = "mydb@sql.mydomain.com";
const char *user = "john";
const char *passwd = "bí mật";
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;
 ...
EXEC SQL kèo chấp bóng đá hôm nay với: Người dùng mục tiêu: Người dùng sử dụng: Passwd;
/* hoặc EXEC SQL kèo chấp bóng đá hôm nay với: người dùng đích: người dùng/: passwd; */

Ví dụ cuối cùng sử dụng tính năng được gọi ở trên là tham chiếu biến ký tự. Bạn sẽ thấy trong các phần sau làm thế nào các biến C có thể được sử dụng trong các câu lệnh kèo chấp bóng đá hôm nay khi bạn tiền tố chúng bằng dấu hai chấm.

17691_17950

17960_18030mẫu sử dụng lược đồ an toàn, Bắt đầu mỗi phiên bằng cách xóa các lược đồ công khai từsearch_path. Ví dụ: thêmTùy chọn = -C search_path =đếnTùy chọnhoặc vấn đề18445_18511Sau khi kèo chấp bóng đá hôm nay. Việc xem xét này không cụ thể cho ECPG; Nó áp dụng cho mọi giao diện để thực thi các lệnh SQL tùy ý.

36.2.2. Chọn kèo chấp bóng đá hôm nay

Các câu lệnh SQL trong các chương trình SQL nhúng được thực hiện theo mặc định trên kèo chấp bóng đá hôm nay hiện tại, nghĩa là, chương trình được mở gần đây nhất. Nếu một ứng dụng cần quản lý nhiều kèo chấp bóng đá hôm nay, thì có ba cách để xử lý việc này.

Tùy chọn đầu tiên là chọn rõ ràng kèo chấp bóng đá hôm nay cho mỗi câu lệnh SQL, ví dụ:

EXEC kèo chấp bóng đá hôm nay tạitên kèo chấp bóng đá hôm nayChọn ...;

Tùy chọn này đặc biệt phù hợp nếu ứng dụng cần sử dụng một số kèo chấp bóng đá hôm nay theo thứ tự hỗn hợp.

Nếu ứng dụng của bạn sử dụng nhiều luồng thực thi, họ không thể chia sẻ kèo chấp bóng đá hôm nay đồng thời. Bạn phải kiểm soát rõ ràng quyền truy cập vào kèo chấp bóng đá hôm nay (sử dụng mutexes) hoặc sử dụng kèo chấp bóng đá hôm nay cho mỗi luồng.

Tùy chọn thứ hai là thực thi một câu lệnh để chuyển đổi kèo chấp bóng đá hôm nay hiện tại. Tuyên bố đó là:

exec SQL SET kèo chấp bóng đá hôm naytên kèo chấp bóng đá hôm nay;

Tùy chọn này đặc biệt thuận tiện nếu nhiều câu lệnh được thực thi trên cùng một kèo chấp bóng đá hôm nay.

Đây là một chương trình ví dụ quản lý nhiều kèo chấp bóng đá hôm nay cơ sở dữ liệu:

#include <stdio.h

EXEC SQL bắt đầu phần khai báo;
    DBName char [1024];
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;

int
chủ yếu()

    EXEC SQL kèo chấp bóng đá hôm nay với TestDB1 với tư cách là người dùng người dùng Con1;
    Exec sql chọn pg_catalog.set_config ('search_path', '', false); Exec sql cam kết;
    EXEC SQL kèo chấp bóng đá hôm nay với TestDB2 với tư cách là người dùng Con2 Testuser;
    Exec sql chọn pg_catalog.set_config ('search_path', '', false); Exec sql cam kết;
    EXEC SQL kèo chấp bóng đá hôm nay với TestDB3 với tư cách là người dùng con3 người dùng TestUser;
    Exec sql chọn pg_catalog.set_config ('search_path', '', false); Exec sql cam kết;

    /* Truy vấn này sẽ được thực thi trong cơ sở dữ liệu được mở cuối cùng "TestDB3". */
    Exec sql chọn current_database () vào: dbname;
    printf ("hiện tại =%s (nên là testdb3) \ n", dbname);

    / * Sử dụng "AT" để chạy truy vấn trong "TestDB2" *//
    EXEC SQL tại con2 chọn current_database () vào: dbname;
    printf ("hiện tại =%s (nên là testdb2) \ n", dbname);

    /* Chuyển kèo chấp bóng đá hôm nay hiện tại sang "TestDB1". */
    EXEC SQL Đặt kèo chấp bóng đá hôm nay Con1;

    Exec sql chọn current_database () vào: dbname;
    printf ("hiện tại =%s (nên là testdb1) \ n", dbname);

    EXEC SQL Ngắt kèo chấp bóng đá hôm nay tất cả;
    trả lại 0;

Ví dụ này sẽ tạo ra đầu ra này:

hiện tại = testDB3 (nên là testdb3)
hiện tại = testDB2 (nên là testdb2)
hiện tại = testDb1 (nên là testdb1)

Tùy chọn thứ ba là khai báo số định danh SQL được liên kết với kèo chấp bóng đá hôm nay, ví dụ:

EXEC kèo chấp bóng đá hôm nay tạitên kèo chấp bóng đá hôm naykhai báotên tuyên bốTuyên bố;
EXEC kèo chấp bóng đá hôm nay Chuẩn bịtên tuyên bốtừ:Dyn-String;

Khi bạn liên kết một định danh SQL với kèo chấp bóng đá hôm nay, bạn thực hiện SQL động mà không có mệnh đề AT. Lưu ý rằng tùy chọn này hoạt động như các chỉ thị tiền xử lý, do đó liên kết chỉ được bật trong tệp.

Đây là một chương trình ví dụ sử dụng tùy chọn này:

22194_22627

Ví dụ này sẽ tạo ra đầu ra này, ngay cả khi kèo chấp bóng đá hôm nay mặc định là TestDB:

Postgres

36.2.3. Đóng kèo chấp bóng đá hôm nay

Để đóng kèo chấp bóng đá hôm nay, hãy sử dụng câu lệnh sau:

exec SQL Ngắt kèo chấp bóng đá hôm nay [kèo chấp bóng đá hôm nay];

Thekèo chấp bóng đá hôm naycó thể được chỉ định theo các cách sau:

  • tên kèo chấp bóng đá hôm nay
  • hiện tại
  • tất cả

Nếu không có tên kèo chấp bóng đá hôm nay được chỉ định, kèo chấp bóng đá hôm nay hiện tại được đóng.

Phong cách tốt mà một ứng dụng luôn ngắt kèo chấp bóng đá hôm nay rõ ràng với mọi kèo chấp bóng đá hôm nay mà nó mở.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.