2011-03-05 84 views
0

我的C++程序使用sql查询读取文件并尝试执行它。当我使用phpMyAdmin,它的工作原理,但是当我的程序执行,它与下面的错误最终执行查询: SQL Syntax error语法正确时出现C++ MySQL Sql语法错误

代码:

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'."; 

感谢您的帮助!

+0

可能两个驱动程序的行为都不一样,你可以尝试从你的查询中删除注释,看看它是否有效? – DhruvPathak 2011-03-05 15:54:59

回答

2

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

+0

添加“CLIENT_MULTI_STATEMENTS”参数后完美工作。谢谢^^ – Josef 2011-03-05 16:09:14

0

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