数据库程序开发的几个问题。

zsr 2000-07-04 02:19:00
各位delphi高手:
1)程序采用MDI多窗口设计,数据库中有A、B、C、D...表,用TDatabase连接数据库,不同的子窗口中连接不同的表,但同时必须对其它表进行查询,比如:窗口1中连接表A,同时须查询表B和C...,窗口2中连接表B,同时须查询表A和D...,请问这样会引起冲突吗?如何解决这一问题呢?
2)多线程数据库程序是一个么概念?何处有这方面的资料?
...全文
632 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjian 2000-07-06
  • 打赏
  • 举报
回复
在使用表之前,先将其TDataBase和TTable都Close,试一下,最好还是用TQuery
zsr 2000-07-06
  • 打赏
  • 举报
回复
再加30分,希望大家继续讨论!
fyje 2000-07-05
  • 打赏
  • 举报
回复
该表已经被打开,打开新form时判断一下该表是否被打开,打开了,就不必在open了
zsr 2000-07-05
  • 打赏
  • 举报
回复
各位大侠:
我仔细地跟踪了一下,发现是打开Table时出错,而此时并无其它的Table处于打开状态,到底是何原因?会不会是BDE的问题或是DB2的问题?
zsr 2000-07-05
  • 打赏
  • 举报
回复
诸位:
这个问题已困扰我将近一个星期了,请一定帮忙解决,分不够可以再加!
huitor 2000-07-05
  • 打赏
  • 举报
回复
在TDatabase所在的窗体上放一个TSession对象也许可以解决问题。
华南虎哥 2000-07-04
  • 打赏
  • 举报
回复
按你提供的说明可能是你使用多线程时在不同窗口同时对一个table进行查询或其他数据库操作动作,建议你在各窗口使用不同的查询(query)控件,同时将与底层数据库的连接放在datamodule中。多线程的资料可以在下面链接找到答案:
http://www.csdn.net/books/bookview.asp?id=9
如果还希望有什么别的要帮忙,请EMAIL:hblinux@163.net
zsr 2000-07-04
  • 打赏
  • 举报
回复
诸位:
全部用Tquery做的话,如何对大字段进行更新呢?
halfdream 2000-07-04
  • 打赏
  • 举报
回复
没有必要,不要开太多窗口。
应用比较复杂的时候,你甚至可以一个窗体对应一个数据模块, 关键是保持逻辑上清晰,很多与界面无关的就可以写在数据模块中。
打开的Table 不用时要及时CLOSE,减少数据出错的可能性。
你连接的是数据库服务器,建议多用TQuery, 少用TTable.
有些东西比较微妙。你有了自己对它的感觉就会知道,
meijg 2000-07-04
  • 打赏
  • 举报
回复
请全部用tquery做,最好不要用ttable,不要用独占方式打开数据库,这种情况很可能是重复打开同一个数据库的原因
meijg 2000-07-04
  • 打赏
  • 举报
回复
清泉不用tquery做,最好不要用ttable,不要用独占方式打开数据库,这种情况很可能是重复打开同一个数据库的原因
Wingsun 2000-07-04
  • 打赏
  • 举报
回复
再需要的时候动态生成Query和Table。在BCB中如下:
TQuery * pQuery=new TQuery(this);
pQuery->DatabaseName="DataBase1";
pQuery->SQL->Clear();
pQuery->SQL->Add(...);
....
....
pQuery->Close();
delete pQuery;
Delphi中应该也可以这样写。
Hank 2000-07-04
  • 打赏
  • 举报
回复
有很多解决方案:

1、用Data Module,如果实在没有办法,可以建立多个TTable而指向同一个表(我怀疑你一下打开那么多表干吗?);
2、USE所要调用的表所在的表单(窗口1中连接表A,同时须查询表B和C,那么可以直接在窗口1中连接窗口2和窗口3);

推荐用第一种方法!
zsr 2000-07-04
  • 打赏
  • 举报
回复
halfdram,您好:
我原来也想这么做的,问题是每个子窗口所要连接的表的名称和数量都不一样,而且数目也较多,是不是有什么好方法呢?
halfdream 2000-07-04
  • 打赏
  • 举报
回复
1)
把访问数据库的那些元件放在一个或多个数据模块上吧。
其它窗体来引用这数据模块就行了。
这样有很多好处的。
zsr 2000-07-04
  • 打赏
  • 举报
回复
meijg,您好!
事实上我就是这么做的,可是当打开的窗口一多时,BDE报错说:
在open语句中指定的游标已经打开,不知何故?(数据服务器用的是DB2).
meijg 2000-07-04
  • 打赏
  • 举报
回复
做一个Data Module 在里面放TDataBase控件连接数据库,在其他子窗口里放Tquery控件,将其databasename属性设为TDataBase,这样就可以在窗口中查询表了,想查那个都行,select field1,field2,... from 表1(表2、3...) where ...

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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