tree listbox combox 数据表关系 数据库 高效

tmpacc 2009-05-24 07:21:47
有如下表
categories:

cate_id int autoinc, cate_name char(xx)

files:
file_id int autoinc, file_cate int, file_path char(xx), file_body blob

界面上一个下拉列表控件,内容为所有cate_name
一个列表框,内容为所有file_path,
一个Memo,内容为对应file的内容

+-----------------+ +----------------------------------------------+
| 类别N | v | | |
+-----------------+ | |
| |
+-----------------+ | |
|c:\win\sub\file.x| | |
| | | |
| | | |
| | | |
| | | |
| | | |
+-----------------+ +---------------------------------------------+

要求:
读取相应类别中某个文件的内容.

分析:
下拉框类别Index与数据库中cate_id无任何对应关系,因为类别可以被删除,会出现不连续的cate_id
所以下拉框两种返回值中的Index不可用,只好用Text文本.
现在当我切换下拉框类别时,要求列表框里的数据根据下拉框中的Text(对应表中的cate_name)来做相应变换.
因为files表中无cate_name,只有cate_id,所以必须先获取对应cate_name的cate_id, 根据获取的cate_id查询files
同样,先择列表框中的一行,获取Text数据, 然后直接查询文件内容

B. 解决方案是:
1. 下拉框切换时,获取其内容CN(cate_name)
2. 在categories表中查找对应CID: select cate_id from categories where cate_name = 'CN'
3. 在files表中查询所有记录: select file_path from files where file_cate = CID
4. 单/双击列表框时,获取对应Text PATH
5. 在files表中查询记录: select file_body from files where file_path = 'PATH'

问题1:
我觉得这种做法,很不合理,如果我的categories表非常大,那么这样做法效率相当低,不知道是否有更好的办法

问题2:
因为files表中根据files_id来区分唯一记录, 这样如果文件PATH相同(列表框中会显示两/多条一样的内容),则无法处理这样情况.

注:
1. 用标准控件,控件与数据库字段不绑定.
2. 暂不考虑用ListView等多列控件来保存记录的ID值,用了这类控件,界面效果不一样
3. 考虑过重构ListBox类,CombBox类,加入变量记录ID,但觉得不是最后的解决方案
...全文
69 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmpacc 2009-05-24
  • 打赏
  • 举报
回复
谢谢
tmpacc 2009-05-24
  • 打赏
  • 举报
回复
另外,如果我打算加个树形控件
根据files表中的file_path生成树
树的叶结点为文件,当我选择某个文件时,我如何获文件内容?

我设想的解决方案是: 从当前结点向根遍历出file_path,根据file_path来确定文件记录
(存在问题同上面"问题2")

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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