ADOCommand怎样批量执行sql语句,该怎么解决
1个回答
2015-07-10
展开全部
因为SQL脚本中的Go是单独成行的,所以比较好判断,另外脚本中最好不要含有注释语句,如果注释过长的话会换行,这样要多判断一次。
另外SQL脚本要是Ansi格式,不要生成Unicode的,否则不能正确运行。
C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList * SQL = new TStringList;
SQL->LoadFromFile(ExtractFilePath(Application->ExeName) +
"SQLScript");
ADOCommand1->CommandText = "";
for(int i = 0; i < SQL->Count; i++)
{
//遇到GO语句,执行
if(SQL->Strings[i] == "GO")
ADOCommand1->Execute();
else
//清除注释
if(SQL->Strings[i].SubString(0,2) == "/*" ||
SQL->Strings[i].SubString(SQL->Strings[i].Length()-2 ,2) == "*/")
{
}
else
//不是GO,不是注释,不为空,则是SQL的执行语句
if(SQL->Strings[i].Trim() != "" &&
SQL->Strings[i].Trim() != " " )
ADOCommand1->CommandText +=
SQL->Strings[i] + " ";
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询