使用c ++从文件填充数据库

时间:2013-11-22 05:03:59

标签: c++ mysql sql database

我在网上搜索并查看书籍,但我完全卡住了。我正在尝试使用.txt文件,sql和c ++填充数据库。我知道可以使用LOAD DATA INFILE,但我必须在这个项目中使用C ++。

这是SQL中的数据库表:

create table Employee(
employeeID char(5) not null,
employeeTYPE char(15),
employeeNAME char(25),
hireYEAR integer,
primary key(employeeID)
);

以下是要插入数据库的文本文件:

E0001 Assistant Joseph 2000
E0002 Assistant Thomas 2012

我理解如何连接到数据库,我知道如何用C ++读入文件,但是我仍然坚持如何使用C ++ / SQL组合读入文件。这是我目前为int main()所做的,但任何帮助或链接都会非常感激。谢谢你:

int main ()
{
  MYSQL *connect, mysql;
  connect=mysql_init(&mysql); //initialize the instance
  //log in and connect to the database
  connect=mysql_real_connect
  (connect, SERVER, USER, PASSWORD, DATABASE, 0, NULL, 0);  //not included for privacy

  ifstream inFile;

  inFile.open ("employee.txt");
  if (inFile.fail())
  {
    cout << "open for employee.txt. failed";
    exit (1);
  }

  while (inFile)
  {
    mysql_query(connect, "insert into Employee values"); //not sure how to do this part...

  }

  inFile.close();
  mysql_close(connect);
  return 0;
}

//用答案编辑 谢谢你的帮助,我已经明白了这个问题。 为了使用嵌入在SQL中的C ++从文件读入数据库,必须知道一些语法思想。

例如,要连接字符串,请使用“+”字符。这与PHP的“。”不同。字符被使用。另外,为了利用'字符,必须使用转义字符\。

一旦你连接到数据库并使用C ++打开文件,你就进入一个循环来从文件中读入。

将Insert语句存储在字符串sql中的语法:

 sql = "insert into TABLE values (\'"+ string1 + "\', \' "
 +string2 + " \', \'" +string3 + "\', \'" +string4+ "\')";

最后,为了将字符串转换为字符,语句为:

sql.c_str()

必须用作mysql_query

的第二个参数

希望这有助于将来寻求帮助的人。我是菜鸟,所以如果我上面的解释有任何错误,请告诉我。

1 个答案:

答案 0 :(得分:1)

我认为您面临的问题是如何获取可变字符串来构建查询。

首先包括字符串流标题:

#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream>      // std::stringstream, std::stringbuf

然后在循环中读取文件中的数据

// you should read the data here....
string data1 = ?;// read from file
int data2 = ?;// read from file
string data3 = ?;// read from file

// then you construct the query string
stringstream ss;
ss << "INSERT INTO employees values (" << data1 << "," << data2 "," data3 ")";
mysql_query( connect, ss.str() );

希望它有所帮助^ _ ^