#include #include #include //using namespace std; #define cout std::cout #define cerr std::cerr #define endl std::endl #define string std::string int callback(void*, int argc, char** argv, char** col_names) { for (int i = 0; i < argc; ++i) cout << col_names[i] << " = " << (argv[i] ? argv[i] : "NULL") << '\n'; cout << endl; return 0; } bool insert_bind(sqlite3* db, string firstname, string lastname, int age, string address, double salary) { const char* sql = "INSERT INTO person (firstname,lastname,age,address,salary) VALUES (?, ?, ?, ?, ?);"; sqlite3_stmt* stmt; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK) { cerr << "Prepare failure: " << sqlite3_errmsg(db) << endl; return false; } if (sqlite3_bind_text(stmt, 1, firstname.c_str(), -1, SQLITE_TRANSIENT) != SQLITE_OK) { sqlite3_finalize(stmt); return false; } if (sqlite3_step(stmt) != SQLITE_DONE) { cerr << "Step failure: " << sqlite3_errmsg(db) << endl; sqlite3_finalize(stmt); return false; } sqlite3_finalize(stmt); return true; } int main() { sqlite3* db = NULL; char* err; int ret; cout << "Hello World" << endl; if (sqlite3_open("test.db", &db)) { cerr << "Error create/open database: " << sqlite3_errmsg(db) << endl; return 0; } string sql = "" "CREATE TABLE IF NOT EXISTS person (" " id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," " firstname TEXT NOT NULL," " lastname TEXT NOT NULL," " age INT," " address TEXT," " salary REAL);" "INSERT INTO person (firstname,lastname,age,address,salary) VALUES ('Eugene', 'X', 18, 'Homie st. 1', 45000.00);" "INSERT INTO person (firstname,lastname,age,address,salary) VALUES ('Jhon', 'Doe', 19, 'Homie st. 18', 42000.00);"; ret = sqlite3_exec(db, sql.c_str(), 0, 0, &err); if (ret != SQLITE_OK) { cerr << "Error create table " << err << endl; sqlite3_free(err); sqlite3_close(db); return 0; } /* int callback = [](void* data, int argc, char** argv, char** colname) { if (data != NULL) { cerr << "Error in callback: " << ((const char*) data) << endl; } for (int i=0; i