我想使用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 *对象我可以使用该函数,但是我应该更改连接代码只是为了使用这个函数。是不是还有其他功能?另外两种连接方式有什么区别,是C与C ++的mysql连接器api不同吗?
答案 0 :(得分:3)
您可能希望使用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的一部分,它是唯一的区别。