社区
C++ Builder
帖子详情
ADOQuery1->ExecSQL()与ADOQuery1->Open()
petiteturbo
2005-06-10 02:16:52
哪位好心人给我讲讲ADOQuery1->ExecSQL()与ADOQuery1->Open()的具体区别啊???
...全文
352
11
打赏
收藏
ADOQuery1->ExecSQL()与ADOQuery1->Open()
哪位好心人给我讲讲ADOQuery1->ExecSQL()与ADOQuery1->Open()的具体区别啊???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weill
2005-06-11
打赏
举报
回复
唉呀呀呀……这种问题也要问啊……
用脚指头想想也明白吖……
petiteturbo
2005-06-11
打赏
举报
回复
谢谢大家!学习了
JXES智能生态系统
2005-06-10
打赏
举报
回复
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;
}
}
关于
ADO
Query
控件的
Exec
SQL
和
open
方法的一些小感受
作者分享了使用
ADO
Query
控件时的感受。起初用
open
方法执行
SQL
语句,在select中正常,但在insert中出错。经反复测试,发现
Exec
SQL
方法可用于delete、insert和update等语句,且无返回值,而
open
方法用于select且有返回值,使用不当会致程序错误。
建筑材料水泥基渗透结晶防水剂技术规范:CCCW-A型混凝土抗渗增强材料应用与施工指导
内容概要:CCCW-A水泥基渗透结晶防水剂是一种以硅酸盐水泥和活性化学物质为主要成分的粉状防水材料,掺入混凝土中使用,具有提高混凝土致密性、抗渗性及自愈修复微裂缝的功能。该产品还能提升混凝土强度10~25%,改善和易性和可泵送性,减少坍落度损失与收缩开裂,并有效抵抗氯离子等有害介质侵蚀,增强耐久性。符合GB 18445-2012标准A型要求,适用于隧道、地下工程、水利、民建、市政等多种对防水抗渗有要求的工程场景。施工时按水泥用量的1~2%添加,需进行配合比试配,养护方式与普通混凝土相同。; 适合人群:从事土木工程施工、建筑材料研发、防水工程设计与施工的技术人员及工程管理人员。; 使用场景及目标:①用于各类地下、水工及民用建筑结构的混凝土防水抗渗工程;②解决混凝土微裂缝自修复与长期耐久性提升问题;③替代部分泵送剂以优化混凝土施工性能。; 阅读建议:使用前须进行配比试验确认添加量,注意佩戴防护装备以防水泥致敏,储存时应防潮防冻,超期使用前需复检性能指标。
易语言源码用API置托盘图标
易语言源码用API置托盘图标
双机并联VSG功率分配与微电网黑启动及预同步控制研究(Simulink仿真实现)
内容概要:本文系统研究了双机并联虚拟同步发电机(VSG)在微电网中的功率分配、黑启动及预同步控制策略,依托Simulink仿真平台构建完整系统模型,实现VSG在孤岛与并网模式下的稳定运行控制。研究重点包括引入虚拟阻抗以优化有功与无功功率的精确均分,设计黑启动过程中电压和频率的自主建立机制,以及并网前的预同步控制,确保电压幅值、频率和相位的精准匹配,有效抑制并网冲击电流。整个仿真体系全面展现了VSG在微电网自主恢复、灵活并网与能量协调控制中的核心技术环节,具有较强的工程复现价值。; 适合人群:具备电力系统、电力电子与自动控制理论基础,从事微电网、分布式能源、VSG控制等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握双机VSG在孤岛模式下的功率协调控制与均流方法;②理解微电网黑启动过程中电压源自组织建模与启动逻辑;③设计并验证并网前预同步控制策略,实现平滑并网; 其他说明:资源包含完整的Simulink仿真模型与配套Matlab代码,适用于科研复现、课程设计或实际工程项目参考,建议结合理论深入调试控制器参数以优化动态响应性能。
复现基于ADMM算法的多主体综合能源系统分布式协同优化研究(Matlab代码实现)
内容概要:本文系统研究了基于交替方向乘子法(ADMM)的多主体综合能源系统分布式协同优化方法,旨在实现多个能源主体之间的高效、隐私保护的能量协同管理。通过建立各主体的局部优化模型,并引入一致性约束条件,利用ADMM算法将集中式优化问题分解为多个分布式子问题进行迭代求解,从而在保证各主体数据隐私的同时达成全局协同优化目标。研究涵盖了模型构建、算法实现、收敛性分析及数值仿真全过程,并提供了完整的Matlab代码实现,有效复现了相关学术成果,具有较强的可验证性与可拓展性。; 适合人群:具备一定数学建模能力与优化理论基础,熟悉Matlab编程,从事综合能源系统、分布式优化算法、电力系统调度等相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握ADMM算法在多主体能源系统协同优化中的建模与实现方法;② 构建支持隐私保护的分布式能源调度系统;③ 利用开源代码开展算法改进、性能测试或应用于实际系统的二次开发与科研论文复现; 阅读建议:建议结合凸优化与分布式计算的基础知识,深入理解增广拉格朗日函数构造、对偶更新与收敛判据的设计原理,在代码调试过程中重点关注惩罚参数选取、变量分裂策略及通信机制的实现细节,以全面掌握算法的核心机制与工程应用要点。
C++ Builder
13,872
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章