MySQL / C ++连接器mysql_real_escape_string函数

时间:2013-08-22 10:37:16

标签: c++ mysql c escaping mysql-real-escape-string

我想使用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不同吗?

1 个答案:

答案 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的一部分,它是唯一的区别。