Друзья !!!
Вот замаялся и прошу вашей помощи.
В SQLite есть функция:
int sqlite3_get_table(sqlite3*, /* An open database */
const char *sql, /* SQL to be executed */
char ***resultp, /* Result written to a char *[] that this points to */
int *nrow, /* Number of result rows written here */
int *ncolumn, /* Number of result columns written here */
char **errmsg /* Error msg written here */
Нужно в C# написать обертку для нее. Пишу так:
[DllImport("sqlite3.dll")]
private static extern int sqlite3_get_table(IntPtr handle, String sql, ref String[] presult, out int nrow, out int ncolumn,ref String errmsg);
Вызываю так:
errorNum = sqlite3_get_table(dbHandle,"SELECT * FROM FioTable;",ref result,out nrow,out ncolumn,ref errmsg);
При этом все проходит без ошибок, но в массиве полученных данных (result) есть только одна запись, а должно быть несколько. В доке написанно следующее:
If the 3rd argument were &azResult then after the function returns azResult will contain the following data:
azResult[0] = "Name";
azResult[1] = "Age";
azResult[2] = "Alice";
azResult[3] = "43";
azResult[4] = "Bob";
azResult[5] = "28";
azResult[6] = "Cindy";
azResult[7] = "21";
Получается, что я только result[0] получаю, но правда он соответствует именно тому, чего я должен получить. Понимаю, что нестыковка именно в переменной, а точнее в ее определении. Помогите, кто может, кто может, помогите !!!
Здравствуйте, Heir, Вы писали:
H>Друзья !!!
H>Вот замаялся и прошу вашей помощи.
H>В SQLite есть функция:
Вопрос в сторону: А зачем так извращаться если для SQLite уже давно есть нормальные .NET API?
http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
Здравствуйте, Heir, Вы писали:
H>Здравствуйте, Kirillov Sergey, Вы писали:
KS>>Вопрос в сторону: А зачем так извращаться если для SQLite уже давно есть нормальные .NET API?
H>Да мне нужно всего 2-4 функции и еще я во всем люблю разбираться. Просто интересно сделать свой код, без еще каких-то навесков и к тому-же в этих NET API не реализовано обращение к функции sqlite3_get_table(). Исходники изучал.
отсюда
In SQLite version 3, the sqlite3_exec routine is just a wrapper around calls to the prepared statement interface.
Какой смысл пользоваться sqlite3_get_table — если она все равно реализована через sqlite3_prepare / sqlite3_step ?
Здравствуйте, Kirillov Sergey, Вы писали:
KS>Какой смысл пользоваться sqlite3_get_table — если она все равно реализована через sqlite3_prepare / sqlite3_step ?
Согласен... никакого !!! Спасибо за наводку (нужно мне лучше доки читать). Буду именно их реализовывать