Return a row... todo get the values
This commit is contained in:
@@ -243,6 +243,29 @@ do_prepare(ErlNifEnv *env, esqlite_connection *conn, const ERL_NIF_TERM arg)
|
|||||||
return make_ok_tuple(env, esqlite_stmt);
|
return make_ok_tuple(env, esqlite_stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ERL_NIF_TERM
|
||||||
|
make_row(ErlNifEnv *env, sqlite3_stmt *statement)
|
||||||
|
{
|
||||||
|
int i, size;
|
||||||
|
ERL_NIF_TERM *array;
|
||||||
|
ERL_NIF_TERM row;
|
||||||
|
|
||||||
|
size = sqlite3_column_count(statement);
|
||||||
|
array = (ERL_NIF_TERM *) malloc(sizeof(ERL_NIF_TERM)*size);
|
||||||
|
|
||||||
|
if(!array)
|
||||||
|
return make_error_tuple(env, "no_memory");
|
||||||
|
|
||||||
|
for(i = 0; i < size; i++) {
|
||||||
|
/* todo get the value, and transform it */
|
||||||
|
array[i] = _atom_ok;
|
||||||
|
};
|
||||||
|
|
||||||
|
row = enif_make_tuple_from_array(env, array, size);
|
||||||
|
free(array);
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
static ERL_NIF_TERM
|
static ERL_NIF_TERM
|
||||||
do_step(ErlNifEnv *env, esqlite_connection *conn, sqlite3_stmt *stmt)
|
do_step(ErlNifEnv *env, esqlite_connection *conn, sqlite3_stmt *stmt)
|
||||||
{
|
{
|
||||||
@@ -251,15 +274,15 @@ do_step(ErlNifEnv *env, esqlite_connection *conn, sqlite3_stmt *stmt)
|
|||||||
fprintf(stderr, "step\n");
|
fprintf(stderr, "step\n");
|
||||||
|
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
|
fprintf(stderr, "step returned: %d\n", rc);
|
||||||
|
|
||||||
if(rc == SQLITE_DONE)
|
if(rc == SQLITE_DONE)
|
||||||
return make_atom(env, "$done");
|
return make_atom(env, "$done");
|
||||||
if(rc == SQLITE_BUSY)
|
if(rc == SQLITE_BUSY)
|
||||||
return make_atom(env, "$busy");
|
return make_atom(env, "$busy");
|
||||||
|
|
||||||
/* Now prepare the output... */
|
if(rc == SQLITE_ROW)
|
||||||
fprintf(stderr, "step returned: %d\n", rc);
|
return make_row(env, stmt);
|
||||||
fprintf(stderr, "# columns: %d\n", sqlite3_column_count(stmt));
|
|
||||||
|
|
||||||
return _atom_ok;
|
return _atom_ok;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ prepare_test() ->
|
|||||||
|
|
||||||
{ok, St2} = esqlite:prepare(Db, "select * from test_table"),
|
{ok, St2} = esqlite:prepare(Db, "select * from test_table"),
|
||||||
|
|
||||||
[ok] = exec(St2),
|
[{ok, ok}] = exec(St2),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
exec(Statement) ->
|
exec(Statement) ->
|
||||||
|
|||||||
Reference in New Issue
Block a user