Michael Haephrati Ответов: 1

Что такое эквивалент sqlite3 sqlite3_exec в cppsqlite3 (если таковой имеется)?


Я использую CppSQLite3 в качестве оболочки sqlite3, потому что он позволяет передавать строки UNICODE и потому что он поддерживает UNICODE в целом.
Существует ли функция CppSQLite3, которая похожа на sqlite3_exec() в том смысле, что позволяет передавать функцию обратного вызова?


sqlite3_exe объявляется следующим образом:
SQLITE_API int sqlite3_exec(
		sqlite3*,                                  /* An open database */
		const char *sql,                           /* SQL to be evaluated */
		int(*callback)(void*, int, char**, char**),  /* Callback function */
		void *,                                    /* 1st argument to callback */
		char **errmsg                              /* Error msg written here */
		);


ExecQuery () CppSQLite3 объявляется следующим образом:
CppSQLite3Query execQuery(LPCTSTR szSQL);


Что я уже пробовал:

Я пробовал искать такую функцию обертки, которая будет принимать
wchar_t *
вместо
char *
но ничего не нашел...

Richard MacCutchan

Есть ли какая-либо документация?

Michael Haephrati

Не то чтобы я знал об этом

1 Ответов

Рейтинг:
12

Daniel Pfeffer

Поскольку у вас есть исходный код CppSqlite , вы всегда можете написать дополнительный метод (Unicode) следующим образом:

SQLITE_API int sqlite3_execW(
		sqlite3*,                                  /* An open database */
		const wchar_t *sql,                           /* SQL to be evaluated */
		int(*callback)(void*, int, wchar_t**, wchar_t**),  /* Callback function */
		void *,                                    /* 1st argument to callback */
		wchar_t **errmsg                              /* Error msg written here */
		);


Этот код будет (а) преобразовывать любые параметры из Unicode в (например) UTF-8 и вызывать обуглить версия. Если предусмотрена функция обратного вызова Unicode, ее можно обернуть аналогичным образом - предоставить функцию обратного вызова, которая принимает обуглить параметры, которые преобразуют их в Unicode и вызывают функцию обратного вызова Unicode.

Если ваш код работает под управлением Windows, API MultibyteToWideChar() и WideCharToMultiByte() выполнят преобразование за вас.