我想使用mysql_real_escape_string来处理撇号、反斜杠等。我搜索并找到了这个函数。
unsigned long mysql_real_escape_string(MYSQL *mysql,
char *to, const char *from, unsigned long length)但是这需要MYSQL *,但是我使用下面的代码来连接:
sql::Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
// Create a connection
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "root", "anubha");
con->setSchema("db");
stmt = con->createStatement(); 因此,如果我没有MYSQL *mysql对象,这是函数所需要的。如果我有这样的联系:
MYSQL* conn = mysql_init(NULL);
mysql_real_connect(conn,"tcp://127.0.0.1:3306", "root",
"anubha", "db" ,0,NULL,0);然后,由于我有MYSQL* object,所以我可以使用这个函数,但是是否应该更改连接代码来使用这个函数。没有其他可用的功能吗?另外,这两种连接方式之间的区别是什么,是C与C++ mysql连接器api的区别吗?
发布于 2013-08-22 10:42:50
您可能希望在C++连接器中使用准备好的查询:
sql::Connection *con;
sql::PreparedStatement *prep_stmt
// ...
prep_stmt = con->prepareStatement("INSERT INTO test(id, label) VALUES (?, ?)");
prep_stmt->setInt(1, 1);
prep_stmt->setString(2, "a");
prep_stmt->execute();
prep_stmt->setInt(1, 2);
prep_stmt->setString(2, "b");
prep_stmt->execute();
delete prep_stmt;
delete con;http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-prepared-statements.html
而且,是的,mysql_real_*是C连接器API的一部分,这是唯一的区别。
https://stackoverflow.com/questions/18378124
复制相似问题