【发布时间】:2015-11-18 04:08:08
【问题描述】:
我正在为我的 Unix 课程做一个项目。从我的代码中可以看出,我创建了读取文本文件并解析文本文件的函数,以便可以将字符串值存储到向量中。
将值存储到向量后,我使用该向量将记录插入到我的数据库中。出于某种原因,我无法插入我的向量并收到此错误:
错误:从不兼容的类型分配给“char *” 'std::__1::basic_string' sql = "插入艺术家(ID,姓名)" \
这是我的代码的 sn-p:
int main(int argc, char* argv[])
{
sqlite3 *db;
int rc;
char *zErrMsg = 0;
char *sql;
// initialize all text files
ifstream artistFile("artist.txt"); //Input file
ifstream cd("cd.txt");
ifstream track("track.txt");
//string sqlArtistInsert;
string sqlCDInsert;
string sqlTrackInsert;
std::vector<std::string> artistVector;
artistVector = readFile(artistVector, artistFile);
createArtistTable();
// Open database
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
exit(0);
}else{
fprintf(stderr, "Opened database successfully\n");
}
// Create SQL statement
sql = "INSERT INTO ARTIST(ID, NAME) " \
"VALUES(" + artistVector[0] + "," + artistVector[1] +"); " \
"VALUES(" + artistVector[2] + "," + artistVector[3] +"); " \
"VALUES(" + artistVector[4] + "," + artistVector[5] +"); " \
"VALUES(" + artistVector[6] + "," + artistVector[7] + ");";
// Execute SQL statement
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Records created successfully\n");
}
sqlite3_close(db);
return 0;
}
由于某种原因,它说错误出现在
sql = insert
^
另外,我正在解析和存储向量的文本文件如下:
1|Pink Floyd //artistVector[0] & artistVector[1]
2|Genesis //artistVector[2] & artistVector[3]
3|Einaudi //artistVector[4] & artistVector[5]
4|Melanie C //artistVector[6] & artistVector[7]
任何帮助将不胜感激!谢谢。
【问题讨论】: