将多行查询解析为存储在C ++中的字符串中的单行查询

时间:2017-04-06 06:24:53

标签: c++ sql database string parsing

我对C ++很陌生,我需要一些时间来实现它。 我的程序应该解析用户给出的输入批处理文件(例如:input.SQL) 使用命令

  

./ DBMS script = input.SQL(其中DBMS是可执行文件)。

我正在尝试将所有数据存储到字符串(SQL_Query)。我的代码以这样一种方式运行,即一次一个地解析和执行查询,每个行的末尾应该有分号分隔符。当我尝试解析输入时,我的代码出现了分段错误。输入文件采用以下格式。

CREATE TABLE T(K INT, A INT, C CHAR(1), PRIMARY KEY(K));<br/>
INSERT INTO T VALUES(1,1,'A');<br/>
SELECT K,C<br/>
FROM T<br/>
WHERE A=1;<br/>
SELECT *<br/>
FROM (SELECT I,D FROM S WHERE B=3)Z1;<br/>
SELECT X.K,Y.C,X.C<br/>
FROM (SELECT * FROM T WHERE C='A') X<br/>
JOIN (SELECT K, C FROM Z)Y ON Y.K=X.K;<br/>
SELECT X1.K, Y1.C, X1.C<br/>
FROM (SELECT T.K,T.C FROM T JOIN Z ON T.K=Z.K WHERE T.C='A') X1<br/>
JOIN (SELECT Z.K,Z.C FROM Z)Y1 ON Y1.K=X1.K;

我需要将这个多行查询添加到一行,以便我的程序正常工作。我已经搜索了这个,但没有找到有用的东西。

我尝试过这样做,但无法成功。

for(int index = 0; index < SQL_Query.size(); index++){
    if (SQL_Query.at(index) == ';'){
      SQL_Query += " " + SQL_Query;
      index++;
    }
}

请帮助。

0 个答案:

没有答案