使用C ++将.txt转换为SQlite3

时间:2015-01-04 18:45:34

标签: c++ sqlite

我想从txt文件中读取数据并使用C ++将其插入到SQlite数据库表中。我准备了一个代码,但它不起作用。

来自我的txt文件的示例行如下; ”,1417392060.000000' , '1.245430', '1.2456', '1.24469', '1.245000'

和代码;

   sqlite3 *db;
   char *zErrMsgt = 0;
   int  rct;
   int  rch;
   int rchi;
  
 rct = sqlite3_open("final.db", &db);
   if( rct ){
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      exit(0);
   }else{
      fprintf(stdout, "Opened database successfully\n");
   }
string resline;
ifstream res("Res.txt");
while(getline(res,resline)){
   string sqlli = "INSERT into FOREXNEW(DATE,OPEN,HIGH,LOW,CLOSE) VALUES ("getline(res,resline)");";
   rchi = sqlite3_exec(db, sqlli.c_str(), callback, 0, &zErrMsgt);
   if( rchi != SQLITE_OK ){
     cout << "SQL error:" <<  zErrMsgt;
     sqlite3_free(zErrMsgt);
   }}

sqlite3_close(db);

任何其他建议和解决方案也将受到赞赏:)谢谢。

1 个答案:

答案 0 :(得分:0)

Getline不返回字符串;它将它复制到第二个参数中传递的变量。更改错误的行:

   string sqlli = "INSERT into FOREXNEW(DATE,OPEN,HIGH,LOW,CLOSE) VALUES ("getline(res,resline)");";

为:

   string sqlli = "INSERT into FOREXNEW(DATE,OPEN,HIGH,LOW,CLOSE) VALUES ("+resline+");";

并检查它是否有效。