2009-10-22 44 views
23

Tôi cần đăng nhập truy vấn, không chỉ chèn/cập nhật/xóa mà còn chọn và các truy vấn khác, từ một số ứng dụng sử dụng SQLite. Giới thiệu việc đăng nhập vào các ứng dụng trong trường hợp này không phải là một giải pháp khả thi trong thực tế. Vậy làm thế nào tôi có thể kích hoạt đăng nhập truy vấn trong SQLite?Ghi nhật ký truy vấn SQL cho SQLite?

+0

Chỉ cần thêm một chút thông tin, nếu bạn đang sử dụng SQLite trong ứng dụng của mình, bạn có thể sử dụng một hệ thống ghi nhật ký khác cho toàn bộ ứng dụng chứ không yêu cầu các hàm SQLite dựng sẵn. –

+0

Có thể trùng lặp [giữ bảng nhật ký trong cơ sở dữ liệu sqlite?] (Https://stackoverflow.com/questions/422951/keeping-a-log-table-in-sqlite-database) – user4157124

+0

Không, như câu hỏi khác hỏi chỉ ghi lại các sửa đổi đối với dữ liệu, trong khi ở đây ý tưởng là để ghi lại các truy vấn như chọn. Câu hỏi ban đầu được chỉnh sửa để làm cho sự khác biệt này rõ ràng. –

Trả lời

10

Hãy xem API sqlite Trace. Bạn phải tự mình thực hiện cuộc gọi lại.

void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); 

Chức năng gọi lại đăng ký bởi sqlite3_trace() được gọi vào những thời điểm khác nhau khi một câu lệnh SQL đang được chạy bởi sqlite3_step(). Hàm gọi lại trả về kết xuất UTF-8 của văn bản câu lệnh SQL khi câu lệnh đầu tiên bắt đầu thực hiện. Các cuộc gọi lại bổ sung xảy ra khi mỗi chương trình con được kích hoạt được nhập vào.

+0

Ok, vì vậy bạn về cơ bản nói rằng tôi sẽ cần phải viết mã để đăng nhập. Tôi tự hỏi nếu có ai đó đã làm điều đó, cho một trường hợp sử dụng phổ biến như thế này? –

+0

Bạn phải viết COMMAND để gọi cơ chế theo dõi ** inbuilt **. –

+0

api sqlite3_trace không hiển thị cho bạn các ràng buộc. Nếu bạn sử dụng một lớp trình bao bọc, bạn có thể muốn ghi nhật ký của riêng mình các câu lệnh sql và các tham số. – eodonohoe

Các vấn đề liên quan