使用c++的MySQL控制结构

Working with MySQL control structures from C++

本文关键字:控制结构 MySQL c++ 使用      更新时间:2023-10-16

我想我使用这些MySQL控制结构(见下文)的方式绝对是错误的。问题可能是在MySQL查询,但我不确定…

MySQL Error:你的SQL语法有错误;检查手册对应于MySQL服务器版本的正确语法如果@记录> 1000,那么选择@actRecords:=COUNT(id) FROMsys_proc_err WHERE ' at line 1

#include <mysql.h>
// other includes, declarations for mysql... etc.
int main() {
  mysql_init(&mysql);
  mysql_real_connect(&mysql,DB_SERVER,DB_USER,DB_PASSWORD,DB_DB_IN,0,0,CLIENT_MULTI_STATEMENTS);
  // Now: DELETE ERROR RECORDS older than 3 days if there is more than 1 000 records, leave 1 000 newest records
  mysql_query(connection, "SELECT @records:=COUNT(`id`) FROM `sys_proc_err`;
    IF @records > 1000 THEN SELECT @actRecords:=COUNT(`id`) FROM `sys_proc_err` WHERE time > (NOW()-259200);
    END IF;
    IF @actRecords > 1000 THEN DELETE FROM `sys_proc_err` WHERE `time` < (NOW()-259200);
    ELSE DELETE FROM `sys_proc_err` ORDER BY `id` ASC LIMIT @actRecords-1,@records-@actRecords;
    END IF;");
  return 0;
}

SELECT @records:=COUNT(id) FROM sys_proc_err的结果是1267。

结果SELECT @actRecords:=COUNT(id) FROM sys_proc_err WHERE time > (NOW()-259200)为6

检查传递给mysql_real_connect的多语句和多查询、多结果连接选项。

文档在这里http://dev.mysql.com/doc/refman/5.5/en/mysql-options.html