问题是我在C / C ++接口中使用PostgreSQL,并且试图访问同一类中其他函数的参数,所以我想在此公共方法 W中使用此参数。 exec()将字符串输入数据库。
首先,我将所有人用作对象,并且所有人都是公开。
Connection.cpp 在功能 wInsert 中。
int Connection::wInsert() {
try {
connection c(stringConnection);
if (c.is_open()) {
work W(c);
int size = sql - > size();
/*string name,lastname;
cout << "Name";
cin >> name;
cout << "Last name";
cin >> lastname;
W.exec(this->insert(string name,string lastname));*/
W.exec(this - > insert(name, lastname)); // here is where I call the function **insert**
cout << "Opened database successfully:" << endl;
W.commit();
} else {
cout << "Can't open database" << endl;
return 1;
}
c.disconnect();
} catch (const std::exception & e) {
cerr << e.what() << std::endl;
return 1;
}
return 0;
}
在注释行之间,我尝试直接传递变量并起作用,但是由于 main()。作为接受函数的参数,我试图这样做。
在我的 main()中,我要求这些字符串。
Database * db;
string name, lastname;
cout << "Name\n";
cin >> name;
cout << "Last name\n";
cin >> lastname;
bd - >insert(name, lastname);
然后在 Connection.cpp 中。在函数插入中,我尝试将从主机接收到的值传递给 wInsert 中的 W.exec()。我试图将我的 int Connection :: wInsert() 转换为 string Connection :: wInsert(string name,string lastname) < / em>,但出现错误,因为 PostgreSQL 要求它为 int 才能正常工作。
因此,我也希望将int转换为字符串,但是我认为这完全不同,或者使用了 malloc 函数,但是我不确定如何在其中实现此代码。
char * Connection::insert(string name, string lastname) {
sql = new string("INSERT INTO person(name,lastname)"\
"VALUES (\'" + name + "\', \'" + lastname + "\');");
int size;
size = sql - > size() + 1;
char * query = new char[size];
strcpy(query, sql - > c_str());
return query;
}
答案 0 :(得分:0)
尝试看看这个。我认为您需要使用$ 1,$ 2并将参数绑定到您的预编译语句
How to prepare statements and bind parameters in Postgresql for C++