IBPP rất ổn định và tôi muốn giới thiệu nó cho sản xuất. Tức là, nếu bạn định sử dụng nó cho các ứng dụng thông thường.
Nếu bạn muốn xây dựng công cụ quản trị hoặc thứ gì đó tương tự, hãy chuẩn bị đi vào bên trong và làm bẩn tay vì một số tính năng mới hơn (nghĩa là công cụ Firebird 2.5 không phải là SQL nhưng cải tiến API không được hỗ trợ. Ví dụ: nó thiếu một lớp để lộ ra API theo dõi mới.
Dù sao, hãy tiếp tục và tôi sử dụng nó. Tôi có một loạt các ứng dụng IBPP trong sản xuất trong nhiều năm, và, như Douglas đã viết, FlameRobin đang sử dụng IBPP và nó hoạt động hoàn hảo (ít nhất là xa như lớp DB có liên quan).
Điều duy nhất cần lưu ý là các trường NUMERIC, được lưu trữ nội bộ dưới dạng số nguyên + tỷ lệ trong Firebird. IBPP cho thấy chúng thông qua C/C++ "double", nhưng cũng thông qua số nguyên 16/32/64bit. Vì vậy, hãy rất cẩn thận khi lấy các giá trị như vậy, vì bạn sẽ không nhận được cảnh báo. Ví dụ, nếu bạn có trường DECIMAL (18,2) với giá trị 254,00 trong đó, và bạn tình cờ đọc nó vào một số nguyên, bạn sẽ nhận được 25400, chứ không phải 254. Hãy chắc chắn rằng bạn đọc những thứ đó dưới dạng gấp đôi hoặc tự mở rộng sau này. Điều này rất hữu ích vì bạn có thể chuyển đổi an toàn 25400 thành chuỗi và sau đó thêm dấu thập phân, vì vậy bạn không bị mất chính xác với gấp đôi (tất cả phụ thuộc vào loại ứng dụng của bạn và số đếm nào, tất nhiên).
Nguồn
2010-01-22 01:01:29
Điểm đầu tiên của mghie: Bạn hoàn toàn đúng, nhưng đi vào mã và thay đổi đường dẫn của thư viện khách hàng thực sự là khá dễ dàng (file: "_ibpp.cpp", phần: GDS :: Call()). Vì thư viện máy khách cho cơ sở dữ liệu nhúng "fbembed.dll" cũng cho phép các kết nối đến một cơ sở dữ liệu từ xa (fbclient.dll có vẻ là một tập con của fbembed.dll), bạn có thể không cần phải thay đổi thư viện máy khách. –
@Ergodicity: Đúng, nhưng sau đó nó vẫn là một thư viện khách duy nhất cho tất cả các kết nối. Câu trả lời của tôi là liên quan đến việc sử dụng nhiều thư viện máy khách cùng một lúc, đó là một tính năng phổ biến của các công cụ máy khách Firebird như FlameRobin (mà vẫn không có nó). Điều đó là không thể sau đó (hơn 5 năm trước), và AFAIK tình hình không thực sự khác nhau ngày hôm nay. Điều này tự nó có thể thú vị trong bối cảnh của câu hỏi, lại "dự án không có nhiều hoạt động đang diễn ra" ... – mghie
@mghie bạn sẽ nói, tốt nhất nên sử dụng [fork ibpp được sử dụng trong Flamerobin] (https : //github.com/mariuz/flamerobin/tree/master/src/ibpp) (ở trạng thái hiện tại)? – Wolf