<prompt> Tekeleza programu ya C inayosoma data kutoka kwa faili ya CSV na kuiingiza kwenye hifadhidata ya SQLite. Programu inapaswa kuunga mkono hoja za mstari wa amri kwa kubainisha njia ya faili ya ingizo, jina la jedwali, na majina ya safu wima kwenye hifadhidata.PLINFORMAT  <response>: pamoja na pamoja na pamoja na pamoja na pamoja na Kazi ya kuunda jedwali katika hifadhidata ya SQLiteutupu create_tablesqlite3 db, const std::string table_name, const std::vector column_names std::stringstream ss; ss UNDA JEDWALI IKIWA HAIPO table_name ; kwa size_t i 0; i column_names.size; i ss column_namesi TEXT i 1 column_names.size ? , : ;; char error_message nullptr; ikiwa sqlite3_execdb, ss.str.c_str, nullptr, nullptr, error_message ! SQLITE_OK std::cerr Hitilafu katika kuunda jedwali: error_message std::endl; sqlite3_bure kosa_ujumbe; Kazi ya kuingiza data kwenye hifadhidata ya SQLitedata_tupu sqlite3 db, const std::string table_name, const std::vector data kwa const auto row : data std::stringstream ss; ss INGIA KWENYE table_name VALUES; kwa size_t i 0; i row.size; i ss safui i 1 row.size ? , : ;; char error_message nullptr; ikiwa sqlite3_execdb, ss.str.c_str, nullptr, nullptr, error_message ! SQLITE_OK std::cerr Hitilafu katika kuingiza data: error_message std::endl; sqlite3_bure kosa_ujumbe; Kazi ya kusoma data kutoka kwa faili ya CSVstd::vector read_csvconst std::string file_path std::ifstream faili file_path; ikiwa !faili.is_open throw std::runtime_errorHaikuweza kufungua faili ya CSV; std::vector data; std:: mstari wa kamba; wakati std::getlinefaili, mstari std::stringstream ssmstari; std::vector safu; std :: seli ya kamba; wakati std::getliness, seli, , safu.sukuma_nyumaseli; data.push_backsafu; kurudi data;int mainint argc, char argv ikiwa argc 5 std::cerr Matumizi: argv0 std::endl; kurudi 1; const std::string input_file argv1; const std::string db_name argv2; const std::string table_name argv3; std::stringstream column_streamargv4; std::vector column_names; std :: safu wima; wakati std::getlinecolumn_stream, safu, , safu_za_majina.push_backsafu; sqlite3 db; ikiwa sqlite3_opendb_name.c_str, db ! SQLITE_OK std::cerr Hitilafu katika kufungua hifadhidata: sqlite3_errmsgdb std::endl; kurudi 1; create_tabledb, table_name, column_names; jaribu data otomatiki read_csvinput_file; ingiza_datadb, jedwali_jina, data; catch consst std::runtime_error e std::cerr Hitilafu katika kusoma faili ya CSV: e.what std::endl; sqlite3_closedb; kurudi 1; sqlite3_closedb; kurudi 0; 