main.cpp
int main(int argc, char **argv) {
if (argc == 1) {
std::cout << "Please provide an argument.\n";
}
else {
try {
sql::Driver* driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc://localhost:3306/logx_test");
sql::Properties properties({{"user", "logx_online"}, {"password", "testuser123"}});
std::unique_ptr<sql::Connection> conn(driver -> connect(url, properties));
if (!strcmp(argv[1], "addItem")) {
if (argc != 7) {
std::cout << "Invalid arguments.";
return 1;
}
Item item;
item.ItemName = argv[2];
addItem(conn, item);
}
conn -> close();
}
catch (sql::SQLException &e) {
}
}
return 0;
}
data_storage.cpp
void addItem(std::unique_ptr<sql::Connection> &conn, Item item) {
try {
std::unique_ptr<sql::PreparedStatement> stmnt(conn -> prepareStatement("insert into item (name, type, size, unit, qty) values (?, ?, ?, ?, ?)"));
stmnt -> setString(1, item.ItemName);
stmnt -> setString(2, item.ItemType);
stmnt -> setString(3, item.ItemSize);
stmnt -> setString(4, item.ItemUnit);
stmnt -> setInt(5, item.ItemQty);
stmnt -> executeQuery();
}
catch (sql::SQLException &e) {
std::cerr << "Error adding new item: " << e.what() << std::endl;
}
}
This programs compiles but when run generate segmentation fault
Here's screenshot using gdb and vscode