社区
C++ Builder
帖子详情
怎么执行一个文件中的SQL,文件太大,TADOQuery不能一次执行,怎么操作
大鸟的小天空
2004-01-01 01:10:58
从文件中读出的SQL语句有100多K,TADOQuery执行错误,这些SQL不能折开,因为这些SQL是以事务的方式运行,如果一个运行错误,就取消前面的操作。
怎么能实现这个操作。
如果使用OSQL怎么不让他出现DOS窗口,谢谢
...全文
80
8
打赏
收藏
怎么执行一个文件中的SQL,文件太大,TADOQuery不能一次执行,怎么操作
从文件中读出的SQL语句有100多K,TADOQuery执行错误,这些SQL不能折开,因为这些SQL是以事务的方式运行,如果一个运行错误,就取消前面的操作。 怎么能实现这个操作。 如果使用OSQL怎么不让他出现DOS窗口,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大鸟的小天空
2004-01-05
打赏
举报
回复
谢过,非常好的方法。
goneaway1981
2004-01-02
打赏
举报
回复
mark
nikeacer2002
2004-01-01
打赏
举报
回复
mark
短歌如风
2004-01-01
打赏
举报
回复
再给你一个用RAII实现的方法:
class TADOTransGuard
{
TADOConnection * Connection;
public:
TADOTransGuard(TADOConnection* init_conn): Connection(init_conn)
{
assert(init_conn != NULL);
init_conn->BeginTrans();
}
~TADOTransGuard()
{
if(Connection != NULL)
Connection->RollbackTrans();
}
void Release()
{
assert(Connection != NULL);
Connection->CommitTrans();
Connection = NULL;
}
};
...
TADOTransGuard guard(ADOConnection1);
ADOQuery1->Connection = ADOConnection1;
//执行所有的SQL语句
gurad.Release();
这个TADOTransGuard类可以在每一段需要事务的代码中重用。如果你经常用ADO实现需要事务逻辑的数据库操作,可以事先写好,用它来保证事务结束,比用try-catch要好用。
我不赞成把逻辑推给存储过程的做法,用存储过程有很多缺点,比如通用性、可移植性、可扩展性,并且加重了数据服务器的负担(虽然数据服务器可以配置很高,但它只有一个,而应用服务器可以同时有多个)。
短歌如风
2004-01-01
打赏
举报
回复
从没见过一条SQL语句有这么长的……听楼主的意思是在执行多个SQL语句,但要保证事务完整,完全可以多次执行啊:
用一个FADOConnection进行连接,不要直接用TADOQuery::ConnectionString。
ADOConnection1->BeginTrans();
try
{
ADOQuery1->Connection = ADOConnection1;
//执行所有的SQL语句
ADOConnection1->CommitTrans();
}
catch(...)
{
ADOConnection1->RollbackTrans();
throw;
}
warton
2004-01-01
打赏
举报
回复
用存储过程!
耙子
2004-01-01
打赏
举报
回复
这么长的多句SQL你应该用存储过程。直接调用存储过程就行了
wangxd
2004-01-01
打赏
举报
回复
ShellExecute(Handle,'open','command','/c dir c:\*.*>d:\bbb.txt',nil,SW_HIDE);
不显示dos窗口
ADO
Connection连接
SQL
Server自动断网问题解决
后来网上查了很多材料,有人提出捕获OleException的方法,既不创建线程和定时器判断数据库是否断开,而是当用户
执行
操作
。发生Ole异常时捕获它,如果是数据库连接错误,那么恢复数据库连接即可,我在他们代码基础上...
Delphi:
ADO
Connection连接
SQL
Server自动断网问题解决
解决方法一:异常时关闭连接,WinXP,win7 32位大部分情况都是起作用的,不过在有些windows
操作
系统下(如家庭版)不起作用,不知为何? =============================== try //
执行
sql
操作
except ...
SQL
语句
在
SQL
中
,数据定义语言DDL(用来建立及定义数据表、字段以及索引等数据库结构)包含的命令有CREATE、DROP、ALTER;数据操纵语言DML(用来提供数据的查询、排序以及筛选数据等功能)包含的命令有SELECT、INSERT、...
sql
总结
=========================...如果
Query
控件用Open方法
执行
SQL
语句,并且所用的
SQL
语句访问的是一张或几张频繁使用的表,在
执行
完
SQL
语句后,一定要调用
SQL
的FetchAll方法,能大大地减少死锁发生的概率。例如:
Query
...
SQL
/数据库 使用蓝皮书
SQL
/数据库 使用蓝皮书 作者: archonwang 标题:
SQL
/数据库 使用蓝皮书 关键字:
SQL
语句 分类: 开发经验 密级: 公开 (评分:...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章