我在网上搜索并查看书籍,但我完全卡住了。我正在尝试使用.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
的第二个参数希望这有助于将来寻求帮助的人。我是菜鸟,所以如果我上面的解释有任何错误,请告诉我。
答案 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() );
希望它有所帮助^ _ ^