Created
July 24, 2017 17:28
-
-
Save ben-albrecht/0ec6b7f5279501943715e2ea0c6de994 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Compiled with: | |
chpl sql-example.chpl -L$(brew --prefix sqlite)/lib -lsqlite3 -I$(brew --prefix sqlite)/include -o sql-example | |
*/ | |
use SQLite3; | |
// TODO: Write this in Chapel | |
require "callback.h"; | |
/* | |
Contents of callback.h : | |
int callback(void *NotUsed, int argc, char **argv, char **azColName) { | |
int i; | |
for(i = 0; i<argc; i++) { | |
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); | |
} | |
printf("\n"); | |
return 0; | |
} | |
*/ | |
extern proc callback(NotUsed: c_void_ptr, argc: c_int, argv: c_ptr(c_string), ref azColName: c_string): c_int; | |
proc main() { | |
var db: c_ptr(sqlite3); | |
var zErrMsg: c_string; | |
var rc: c_int = sqlite3_open("test.db".c_str(), db); | |
writeln(rc:int); | |
if rc { | |
stderr.write("Can't open database: %s\n", sqlite3_errmsg(db):string); | |
sqlite3_close(db); | |
halt(); | |
} else { | |
writeln("Opened database successfully"); | |
} | |
var sql = "CREATE TABLE COMPANY(" + | |
"ID INT PRIMARY KEY NOT NULL," + | |
"NAME TEXT NOT NULL," + | |
"AGE INT NOT NULL," + | |
"ADDRESS CHAR(50)," + | |
"SALARY REAL );"; | |
var voidPtr: c_void_ptr; | |
rc = sqlite3_exec(db, sql.c_str(), c_ptrTo(callback), voidPtr, c_ptrTo(zErrMsg)); | |
if rc != 0 { | |
stderr.write("SQL error: %s", zErrMsg:string); | |
} else { | |
writeln("Records created successfully"); | |
} | |
sqlite3_close(db); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment