采用的数据库是MySQL,Delphi开发客户端。
由于是第一次接触数据库开发,很多地方还不懂。
特上来请教。
主要有以下问题(原谅我的菜):
1、数据库控件方面使用了Devexpress 和 MyDAC,估计是相对比较适合的。不过相关问题讨论可不根据限定的控件。
2、首先不是很清楚的是,这样的方式客户端远程连接mysql会有什么不妥的地方?
3、数据库连接上,我采用一个TMyConnection,填写mysql的连接信息。
4、因为有很多的表要连,所以我拖动了很多query 和 dataSource 控件,然后把所有的query 控件中的connect都指向TMyConnection。这样做好不好?有什么更好的方法?
5、然后Devexpress 控件使用cxgrid,设置相关dataSource。
6、所以暂时使用方式是,在query上写好相关的sql语句,然后打开程序的时候将所有的query控件的Active设置为true。cxgrid就得到了数据表的内容信息。这样如何?
7、数据库控件是使用拖入到窗体的方式还是使用动态生成的方式好?
8、因为是客户端,不知道连接池的方式有没有作用?
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
12、待续。
暂时就想到这么多,还会补充。还有很多细节问题,将另开讨论帖。
希望得到各路人士鼎力相助,能帮多少就帮多少,有相关案例或源码更好。
不胜感激。
5 个解决方案
#1
试着挑几条
4、因为有很多的表要连,所以我拖动了很多query 和 dataSource 控件,然后把所有的query 控件中的connect都指向TMyConnection。这样做好不好?有什么更好的方法?
5、然后Devexpress 控件使用cxgrid,设置相关dataSource。
6、所以暂时使用方式是,在query上写好相关的sql语句,然后打开程序的时候将所有的query控件的Active设置为true。cxgrid就得到了数据表的内容信息。这样如何?
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>
这几条实际都是编码风格的问题,由于delphi提供了DB感知控件,可以把列表、编辑框、选择框等GUI元素和数据库的表、字段直接关联起来。这样有一个显而易见的好处是很多数据库读写操作不需要再写代码(实际上是由delphi帮你实现了),但坏处是往往会拘泥于使用DB控件而使程序失去了灵活性。
所以采用哪种“风格”要看具体的需求
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>
客户端与服务端在局域网内还是通过广域网、互联网连接?网络带宽、稳定性如何?
有多少客户端,并发率(同时操作)如何?
一般而言,传统的C/S两层结构数据库应用适用于局域网环境
而广域网、互联网的应用,则需选择B/S或C/S多层结构,基于HTTP、WebService或Socket API进行通信
---------
BTW:接触一样新技术总是从没有问题到问题很多,再到问题很少的过程
4、因为有很多的表要连,所以我拖动了很多query 和 dataSource 控件,然后把所有的query 控件中的connect都指向TMyConnection。这样做好不好?有什么更好的方法?
5、然后Devexpress 控件使用cxgrid,设置相关dataSource。
6、所以暂时使用方式是,在query上写好相关的sql语句,然后打开程序的时候将所有的query控件的Active设置为true。cxgrid就得到了数据表的内容信息。这样如何?
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>
这几条实际都是编码风格的问题,由于delphi提供了DB感知控件,可以把列表、编辑框、选择框等GUI元素和数据库的表、字段直接关联起来。这样有一个显而易见的好处是很多数据库读写操作不需要再写代码(实际上是由delphi帮你实现了),但坏处是往往会拘泥于使用DB控件而使程序失去了灵活性。
所以采用哪种“风格”要看具体的需求
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>
客户端与服务端在局域网内还是通过广域网、互联网连接?网络带宽、稳定性如何?
有多少客户端,并发率(同时操作)如何?
一般而言,传统的C/S两层结构数据库应用适用于局域网环境
而广域网、互联网的应用,则需选择B/S或C/S多层结构,基于HTTP、WebService或Socket API进行通信
---------
BTW:接触一样新技术总是从没有问题到问题很多,再到问题很少的过程
#2
1、数据库控件方面使用了Devexpress 和 MyDAC
Devexpress是界面控件,决定了界面的显示、操作效果
MyDAC是连接控件,决定了数据库的连接方式,也决定了是否适合互联网、广域网
Devexpress是界面控件,决定了界面的显示、操作效果
MyDAC是连接控件,决定了数据库的连接方式,也决定了是否适合互联网、广域网
#3
你使用的是几层?
#4
to 1#:
现在的情况大概是这样:
1、局域网使用。
2、客户端大概100个,同时使用可能50个。
3、数据总量100万或更多。
4、因为是由原来的网页版系统更改的,数据库沿用原来的mysql数据库。
所以现在我也不清楚用什么方式比较好。
to 2#
MyDAC是连接控件,应该是适合互联网还是广域网还是局域网?
to 3#
暂时是两层。
请指教。
现在的情况大概是这样:
1、局域网使用。
2、客户端大概100个,同时使用可能50个。
3、数据总量100万或更多。
4、因为是由原来的网页版系统更改的,数据库沿用原来的mysql数据库。
所以现在我也不清楚用什么方式比较好。
to 2#
MyDAC是连接控件,应该是适合互联网还是广域网还是局域网?
to 3#
暂时是两层。
请指教。
#5
把一个b/s的系统,以c/s重新实现?
确定是局域网,以后不会出现:位于公司外部的用户要求直接使用此系统?
1-6所列好像不是问题,
7、数据库控件是使用拖入到窗体的方式还是使用动态生成的方式好?
>>简单、确定的,拖放就行了;动态好是好,但是麻烦一些
8、因为是客户端,不知道连接池的方式有没有作用?
>>好像是。。。。。。。。一个连接,多个query
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
>>没怎么用过mysql,会不会是网络、交换机的原因?
做一个通用的连接方法,捕获异常,自动再连一次。。。。。让应用感觉不到
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>简单、确定的,lookup这样方便。
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>担心 同时写,还是读后别人写过了?
我习惯标准控件,ado+mssql,也很少c/s,都是只读的dbgrid用于显示,靠按钮执行sql去增删改
Devexpress 和 MyDAC正好都没用过,只是泛泛而谈
确定是局域网,以后不会出现:位于公司外部的用户要求直接使用此系统?
1-6所列好像不是问题,
7、数据库控件是使用拖入到窗体的方式还是使用动态生成的方式好?
>>简单、确定的,拖放就行了;动态好是好,但是麻烦一些
8、因为是客户端,不知道连接池的方式有没有作用?
>>好像是。。。。。。。。一个连接,多个query
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
>>没怎么用过mysql,会不会是网络、交换机的原因?
做一个通用的连接方法,捕获异常,自动再连一次。。。。。让应用感觉不到
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>简单、确定的,lookup这样方便。
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>担心 同时写,还是读后别人写过了?
我习惯标准控件,ado+mssql,也很少c/s,都是只读的dbgrid用于显示,靠按钮执行sql去增删改
Devexpress 和 MyDAC正好都没用过,只是泛泛而谈
#1
试着挑几条
4、因为有很多的表要连,所以我拖动了很多query 和 dataSource 控件,然后把所有的query 控件中的connect都指向TMyConnection。这样做好不好?有什么更好的方法?
5、然后Devexpress 控件使用cxgrid,设置相关dataSource。
6、所以暂时使用方式是,在query上写好相关的sql语句,然后打开程序的时候将所有的query控件的Active设置为true。cxgrid就得到了数据表的内容信息。这样如何?
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>
这几条实际都是编码风格的问题,由于delphi提供了DB感知控件,可以把列表、编辑框、选择框等GUI元素和数据库的表、字段直接关联起来。这样有一个显而易见的好处是很多数据库读写操作不需要再写代码(实际上是由delphi帮你实现了),但坏处是往往会拘泥于使用DB控件而使程序失去了灵活性。
所以采用哪种“风格”要看具体的需求
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>
客户端与服务端在局域网内还是通过广域网、互联网连接?网络带宽、稳定性如何?
有多少客户端,并发率(同时操作)如何?
一般而言,传统的C/S两层结构数据库应用适用于局域网环境
而广域网、互联网的应用,则需选择B/S或C/S多层结构,基于HTTP、WebService或Socket API进行通信
---------
BTW:接触一样新技术总是从没有问题到问题很多,再到问题很少的过程
4、因为有很多的表要连,所以我拖动了很多query 和 dataSource 控件,然后把所有的query 控件中的connect都指向TMyConnection。这样做好不好?有什么更好的方法?
5、然后Devexpress 控件使用cxgrid,设置相关dataSource。
6、所以暂时使用方式是,在query上写好相关的sql语句,然后打开程序的时候将所有的query控件的Active设置为true。cxgrid就得到了数据表的内容信息。这样如何?
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>
这几条实际都是编码风格的问题,由于delphi提供了DB感知控件,可以把列表、编辑框、选择框等GUI元素和数据库的表、字段直接关联起来。这样有一个显而易见的好处是很多数据库读写操作不需要再写代码(实际上是由delphi帮你实现了),但坏处是往往会拘泥于使用DB控件而使程序失去了灵活性。
所以采用哪种“风格”要看具体的需求
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>
客户端与服务端在局域网内还是通过广域网、互联网连接?网络带宽、稳定性如何?
有多少客户端,并发率(同时操作)如何?
一般而言,传统的C/S两层结构数据库应用适用于局域网环境
而广域网、互联网的应用,则需选择B/S或C/S多层结构,基于HTTP、WebService或Socket API进行通信
---------
BTW:接触一样新技术总是从没有问题到问题很多,再到问题很少的过程
#2
1、数据库控件方面使用了Devexpress 和 MyDAC
Devexpress是界面控件,决定了界面的显示、操作效果
MyDAC是连接控件,决定了数据库的连接方式,也决定了是否适合互联网、广域网
Devexpress是界面控件,决定了界面的显示、操作效果
MyDAC是连接控件,决定了数据库的连接方式,也决定了是否适合互联网、广域网
#3
你使用的是几层?
#4
to 1#:
现在的情况大概是这样:
1、局域网使用。
2、客户端大概100个,同时使用可能50个。
3、数据总量100万或更多。
4、因为是由原来的网页版系统更改的,数据库沿用原来的mysql数据库。
所以现在我也不清楚用什么方式比较好。
to 2#
MyDAC是连接控件,应该是适合互联网还是广域网还是局域网?
to 3#
暂时是两层。
请指教。
现在的情况大概是这样:
1、局域网使用。
2、客户端大概100个,同时使用可能50个。
3、数据总量100万或更多。
4、因为是由原来的网页版系统更改的,数据库沿用原来的mysql数据库。
所以现在我也不清楚用什么方式比较好。
to 2#
MyDAC是连接控件,应该是适合互联网还是广域网还是局域网?
to 3#
暂时是两层。
请指教。
#5
把一个b/s的系统,以c/s重新实现?
确定是局域网,以后不会出现:位于公司外部的用户要求直接使用此系统?
1-6所列好像不是问题,
7、数据库控件是使用拖入到窗体的方式还是使用动态生成的方式好?
>>简单、确定的,拖放就行了;动态好是好,但是麻烦一些
8、因为是客户端,不知道连接池的方式有没有作用?
>>好像是。。。。。。。。一个连接,多个query
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
>>没怎么用过mysql,会不会是网络、交换机的原因?
做一个通用的连接方法,捕获异常,自动再连一次。。。。。让应用感觉不到
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>简单、确定的,lookup这样方便。
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>担心 同时写,还是读后别人写过了?
我习惯标准控件,ado+mssql,也很少c/s,都是只读的dbgrid用于显示,靠按钮执行sql去增删改
Devexpress 和 MyDAC正好都没用过,只是泛泛而谈
确定是局域网,以后不会出现:位于公司外部的用户要求直接使用此系统?
1-6所列好像不是问题,
7、数据库控件是使用拖入到窗体的方式还是使用动态生成的方式好?
>>简单、确定的,拖放就行了;动态好是好,但是麻烦一些
8、因为是客户端,不知道连接池的方式有没有作用?
>>好像是。。。。。。。。一个连接,多个query
9、写了部分代码,测试的时候发觉用了一段时间会出现客户端与mysql断开连接的状况。怎么考虑这样的情况?
>>没怎么用过mysql,会不会是网络、交换机的原因?
做一个通用的连接方法,捕获异常,自动再连一次。。。。。让应用感觉不到
10、考虑过界面与业务逻辑的分离,但很多地方用到lookup ,处理起来比较麻烦,是否有必要?
>>简单、确定的,lookup这样方便。
11、还没有考虑过如何处理数据库并发操作问题,请指点指点?
>>担心 同时写,还是读后别人写过了?
我习惯标准控件,ado+mssql,也很少c/s,都是只读的dbgrid用于显示,靠按钮执行sql去增删改
Devexpress 和 MyDAC正好都没用过,只是泛泛而谈