C ++ MySQL Sql语法错误,语法正确

时间:2011-03-05 15:49:30

标签: c++ mysql file-io

我的C ++程序使用sql查询读取文件并尝试执行它。当我使用phpmyadmin执行查询时,它可以工作,但是在我的程序中执行时,它最终会出现以下错误: SQL Syntax error

代码:

    ifstream create_file ("create.sql");

    if (create_file.is_open())
    {
        char * create;
        int length;

        create_file.seekg (0, ios::end);
        length = create_file.tellg();
        create_file.seekg (0, ios::beg);
        create = new char [length];
        create_file.read (create,length);
        create_file.close();

        cout << "Executing query: " << endl;
        cout.write (create,length);
        cout << "EOF query" << endl;
        if(mysql_query(mysql, "CREATE DATABASE grant_db")) {
            fprintf(stderr, "Failed to create database: Error: %s\n",
              mysql_error(mysql));
        }
        if(mysql_select_db(mysql, "grant_db")) {
            fprintf(stderr, "Failed to select database: Error: %s\n",
              mysql_error(mysql));
        }
        if(mysql_query(mysql, create)) {
            fprintf(stderr, "Failed to create table: Error: %s\n",
              mysql_error(mysql));
            mysql_query(mysql, "DROP DATABASE grant_db");
        }

        delete[] create;
    } else cout << "Unable to open file 'create.sql'."; 

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您不能在单个mysql_query调用中放置多个语句。您需要一次执行一个,默认情况下至少执行一个。请参阅mysql_query文档。

答案 1 :(得分:0)

我敢打赌它不会处理/* ... */评论。请尝试使用--条评论。