日期:2014-05-16  浏览次数:20811 次

mysql,批量插入的时候能不能用预编译?
通过sql语句,例如 insert into t1(id1,ids) values(1,2),(3,4)……
可以提高批量插入的效率。

我想问问预编译的时候能不能用?

int i = mysql_stmt_prepare(stmt, sql.c_str(), (uint32)sql.size());
printf("Error %s\n",mysql_stmt_error(stmt));

上面的代码中,sql的值是:"INSERT INTO sqltest(idVal,longVal,longlongVal,doubleVal,strVal,blobVal) VALUES(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?)"

i的返回值是9,

printf居然是“Error ”,也就是说mysql_stmt_error(stmt)是空???

请问这是怎么的呢?谢谢!!


------解决方案--------------------
还是直接生成SQL语句吧。
------解决方案--------------------
直接load data稍微效率高一些
------解决方案--------------------
提高效率的话,executemangy()应该是一种很炫的方法