ADOQuery1->ExecSQL()与ADOQuery1->Open()

petiteturbo 2005-06-10 02:16:52
哪位好心人给我讲讲ADOQuery1->ExecSQL()与ADOQuery1->Open()的具体区别啊???
...全文
352 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weill 2005-06-11
  • 打赏
  • 举报
回复
唉呀呀呀……这种问题也要问啊……
用脚指头想想也明白吖……
petiteturbo 2005-06-11
  • 打赏
  • 举报
回复
谢谢大家!学习了
  • 打赏
  • 举报
回复
ADOQuery1->ExecSQL()执行数据更新语句
insert
update
delete
ADOQuery1->Open()执行查询语句select
luobeyond 2005-06-10
  • 打赏
  • 举报
回复
sczyq的代码确实比较好
我也多了一点经验
我很高兴哦
第2次留言
发现留言比不留言要好
我发现你的代码改一下更加完善
你的代码
if (ADOQuery->SQL->Strings[0].SubString(1,6).UpperCase() == "SELECT")
这里可能会出现错误
把它改一下可能通用性更强
就是对前面空格的判断因为这样也是对的
" select * from......."







dddbryant 2005-06-10
  • 打赏
  • 举报
回复
同意楼上的
tsk 2005-06-10
  • 打赏
  • 举报
回复
返回结果集就是从数据库取到数据.暂存在缓存中,就把它当着暂存在ADOQuery中好了!!!
而不返回结果集,就是操作数据库,不读取数据,这样理解!

hunshihaichong 2005-06-10
  • 打赏
  • 举报
回复
To:luobeyond
我觉得你说的太简单了,虽然易懂
To: sunliwen780502
结果集是什么意思,我的SQL学得不好
谢谢
sunliwen780502 2005-06-10
  • 打赏
  • 举报
回复
ADOQuery1->ExecSQL()不返回结果集,主要是针对modify, insert,update, delete 等操作。
而ADOQuery1->Open(); 则返回届集,主要是执行查询操作。
sczyq 2005-06-10
  • 打赏
  • 举报
回复
关于三个通用通用的函数,其实没必要怎么复杂, ADOQuery->SQL 本身是TStrings 类型。
而从这里直接加入SQL语句,也更加容易读懂程序。主要是SQL语句出错的问题,因此,容错机制显得非常重要。

//---------------------------------------------------------------------------
bool __fastcall ExecSQLTry(TADOQuery *ADOQuery)
{
bool Succeeded = false;

if (ADOQuery->SQL->Count)
{
try
{
if (ADOQuery->SQL->Strings[0].SubString(1,6).UpperCase() == "SELECT")
ADOQuery->Open();
else ADOQuery->ExecSQL();
Succeeded = true;
}
catch ( Exception &E )
{
Succeeded = false;
RunTimeError(ADOQuery, E.Message // 异常处理函数,可用来显示或记录日志
+ "\n------------------------------\n"
+ ADOQuery->SQL->Text);
}
catch (...)
{
Succeeded = false;
RunTimeError(ADOQuery, ADOQuery->SQL->Text); // 出错处理
}
}
return Succeeded;
}
//---------------------------------------------------------------------------
luobeyond 2005-06-10
  • 打赏
  • 举报
回复
ADOQuery1->ExecSQL()执行数据更新语句
insert
update
delete
ADOQuery1->Open()执行查询语句select
luobeyond 2005-06-10
  • 打赏
  • 举报
回复
ADOQuery1->ExecSQL()执行数据更新语句
insert
update
delete
modify
上面所有的这些操作都是改变数据库的内容而不要返回结果
例如:
AnsiString sSql;
sSql = "insert into P_Contract_Tax values(1,'abc',3.7,"hello");
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(sSql);
Query1->ExecSQL();

ADOQuery1->Open()执行查询语句select
例如:
Ansistring sSql;
sSql=”select * from stu.dbf”
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(sSql);
Query1->Open();

下面是三个通用通用的函数,你写好后直接调用就好了:

执行数据更新语句
void __fastcall ExecuteSql(TADOQuery *Que,AnsiString sSQL)
{
if (Que->Active)
Que->Active=false;

if (Que->Filter!=""){Que->Filter="";}
if (Que->Filtered){Que->Filtered=false;}
Que->SQL->Clear();
Que->SQL->Add(sSQL);

Que->ExecSQL();

}
//---------------------------------------------------------------------------
void __fastcall ExecuteSql(TADOQuery *Que,TStringList *sSQL)
{
if (Que->Active)
Que->Active=false;

if (Que->Filter!=""){Que->Filter="";}
if (Que->Filtered){Que->Filtered=false;}
Que->SQL->Clear();
Que->SQL->Assign(sSQL);

Que->ExecSQL();
}
//---------------------------------------------------------------------------
//执行数据查询语句
void __fastcall ResultSql(TADOQuery *Que,AnsiString sSQL)//返回数据集
{
if (Que->Active) {Que->Active=FALSE;}
if (Que->Filter!=""){Que->Filter="";}
if (Que->Filtered){Que->Filtered=false;}
Que->SQL->Clear();
Que->SQL->Add(sSQL);
Que->ExecSQL();
try
{
Que->Active=true;
}
catch(...)
{
return;
}
}

内容概要:本文系统研究了基于交替方向乘子法(ADMM)的多主体综合能源系统分布式协同优化方法,旨在实现多个能源主体之间的高效、隐私保护的能量协同管理。通过建立各主体的局部优化模型,并引入一致性约束条件,利用ADMM算法将集中式优化问题分解为多个分布式子问题进行迭代求解,从而在保证各主体数据隐私的同时达成全局协同优化目标。研究涵盖了模型构建、算法实现、收敛性分析及数值仿真全过程,并提供了完整的Matlab代码实现,有效复现了相关学术成果,具有较强的可验证性与可拓展性。; 适合人群:具备一定数学建模能力与优化理论基础,熟悉Matlab编程,从事综合能源系统、分布式优化算法、电力系统调度等相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握ADMM算法在多主体能源系统协同优化中的建模与实现方法;② 构建支持隐私保护的分布式能源调度系统;③ 利用开源代码开展算法改进、性能测试或应用于实际系统的二次开发与科研论文复现; 阅读建议:建议结合凸优化与分布式计算的基础知识,深入理解增广拉格朗日函数构造、对偶更新与收敛判据的设计原理,在代码调试过程中重点关注惩罚参数选取、变量分裂策略及通信机制的实现细节,以全面掌握算法的核心机制与工程应用要点。

13,872

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧