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

zsr 2000-07-04 02:19:00
各位delphi高手:
1)程序采用MDI多窗口设计,数据库中有A、B、C、D...表,用TDatabase连接数据库,不同的子窗口中连接不同的表,但同时必须对其它表进行查询,比如:窗口1中连接表A,同时须查询表B和C...,窗口2中连接表B,同时须查询表A和D...,请问这样会引起冲突吗?如何解决这一问题呢?
2)多线程数据库程序是一个么概念?何处有这方面的资料?
...全文
634 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 ...
技术选型1,前端微信小程序原生框架cssJavaScript2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云数据库云存储 1,小程序端1-1,首页首页有以下几个功能点点餐菜单浏览排号等位拨打电话顶部轮播图搜索菜品这里点餐分两种1,可以设置直接点餐直接点餐:适合小型饭店,或者奶茶类的快餐店。直接就可以下单,不用识别桌号2,也可设置扫码点餐扫码点餐适合中大型饭店,可以区分桌号,方便管理我后面会教大家如何生成桌号二维码,只需要把对应桌号的二维码贴在餐桌上,用户点击 扫码点餐 识别二维码,即可获取到桌号信息。1-2,菜品浏览页菜品浏览分两种1,不带分类适合菜品少的时候2,带分类菜品多的时候,带分类更方便客户选择不带分类 带分类 1-3,搜索功能我们这里搜索有两个触发方式1,直接点击搜索图标2,点击键盘上的搜索键1-4,搜索结果,支持模糊查询如我这里只搜‘鱼’,那么菜品中所有包含鱼的都可以搜索到 1-5,购物车首先菜品列表页可以直接添加商品到购物车购物车弹起后可以做如下操作1,增删单个菜品2,清空购物车3,删除菜品这些操作都和菜品列表是联动的,也就是菜品列表和购物车里增删个数,都是可以同步的。我会在项目预览章节的视频里做具体演示。1-6,下单页下单页就是确认订单后进行下单支付的。有以下功能1,点餐明细2,价格计算3,桌号地址4,就餐人数5,添加备注6,点击下单1-7,支付页支付页分两种方式1,模拟支付适合前期学习,毕业设计等演示类的场景。2,真实微信支付适合商用,但是使用微信支付必须要有营业执照,所以前期如果只是学习的话,建议使用模拟支付。 1-8,我的订单页我的订单页分以下几个状态1,新下单待上餐2,已上餐待评价3,订单完成4,订单取消1-9,提交评论页我们可以对店家进行评论。 1-10,评价列表页可以查看所有评价和自己的评价 1-11,排号等位可以看出,我们可以选择就餐人数,排大桌或者小桌。我这里已排小桌为例通过上图可以看出1,当前排号情况2,我的排号3,可以重新排号4,到号时会有到号提示后面我会把订阅消息功能加进来,这样到号后会有订阅消息提示。 1-12,个人中心个人中心分登录和未登录两种状态未登录已登录 1-13,微信授权登录小程序 2,后厨端和排号管理端2-1,后厨端主要供后厨的厨师使用1,可以查看当前新下单2,完成后可以操作菜品完成3,可以监听用户新下单4,有新订单时会有语音提示5,厨师登录页语音提示我会在视频课里具体演示厨师登录页 厨师管理页可以查看待制作订单用户新下单后,会有语音提示 2-2,排号管理页同样也有登录页,和上面厨师登录一样,这里重点看下排号管理页管理员可以查看当前排号情况,可以叫号。3,cms管理后台我们这里的可视化网页后台使用的时云开发自带的cms(内容管理)3-1,登录页 3-2,管理后台我们可以在这里 1,添加轮播图,删除轮播图,修改轮播图2,添加菜品,删除菜品,修改菜品,上架下架菜品3,管理订单4,查看评价5,管理后厨和排号管理员6,查看排号数据  比如我查询某个用户的所有订单 查询所有新下单还未上菜的订单 还有更多的功能,我会在视频课里给大家用视频来演示,这样更直观。 4,数据库数据库我们这里用云开发自带的云数据库餐厅管理员查看趋势图

2,497

社区成员

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

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