diff --git a/sqlite3/sqlite3.c b/sqlite3/sqlite3.c index c78f2cd..71d8f3c 100644 --- a/sqlite3/sqlite3.c +++ b/sqlite3/sqlite3.c @@ -1,9 +1,31 @@ #include #include #include +#include + +sqlite3* getDB(List args) { + return (sqlite3*)args.values[0].data.intVal; +} + +GroundValue exec_sql(GroundScope* scope, List args) { + printf("hi\n"); + sqlite3* DB = getDB(args); + printf("got db\n"); + char* sqlCode = args.values[1].data.stringVal; + printf("%s\n", sqlCode); + + char* errMessage; + int exitCode = sqlite3_exec(DB, sqlCode, NULL, 0, &errMessage); + + if (exitCode != SQLITE_OK) { + ERROR(errMessage, "SQLite3Error"); + } else { + return groundCreateValue(INT, 0); + } +} GroundValue close_db(GroundScope* scope, List args) { - sqlite3* DB = (sqlite3*)args.values[0].data.intVal; + sqlite3* DB = getDB(args); sqlite3_close(DB); return groundCreateValue(INT, 0); } @@ -24,4 +46,5 @@ GroundValue open_db(GroundScope* scope, List args) { void ground_init(GroundScope* scope) { groundAddNativeFunction(scope, "sqlite3_Open", open_db, INT, 1, STRING, "dbPath"); groundAddNativeFunction(scope, "sqlite3_Close", close_db, INT, 1, INT, "db"); + groundAddNativeFunction(scope, "sqlite3_Exec", exec_sql, INT, 2, INT, "db", STRING, "sql"); } \ No newline at end of file diff --git a/test.grnd b/test.grnd index 47f90cc..ba0c9cb 100644 --- a/test.grnd +++ b/test.grnd @@ -1,4 +1,6 @@ extern "sqlite3" + call !sqlite3_Open "test.db" &db +call !sqlite3_Exec $db "CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL)" & call !sqlite3_Close $db & \ No newline at end of file