Foxtable(狐表)用户栏目专家坐堂 → 建议FoxTable进一步加强对SQL命令的支持!


  共有35081人关注过本帖树形打印复制链接

主题:建议FoxTable进一步加强对SQL命令的支持!

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
建议FoxTable进一步加强对SQL命令的支持!  发帖心情 Post By:2009/5/14 12:50:00 [显示全部帖子]

   如题。
   在现在的系统中,SQLcommand一次只能运行一行SQL命令,如果要执行多个命令,就需要反复的采用SQLcommand,效率又很低,在实际中很不方便。当采用SQL server作为外部数据源的时候,虽然可以用执行存储过程的办法来解决,但是,假如一次要执行的SQL命令只有简单的几行,编写大量的存储过程好像并不是一个好办法,倒不如对SQLCommand改进一下,或者再新增一个类,允许一次执行多行SQL命令,这样会更方便,不知可行不可行!(主要是针对不返回任何值的命令,使用SQLcommand的时候绝大多数情况下是不返回值的)。
    另外,以前我提过一个问题,就是如果使用SQL命令修改了表,并不会立即显示在表中,必须重新加载表才会显示,所以,在这种情况下就需要反复的使用Load命令加载表,在实际中很不方便,又影响速度,看能否改进一下,用SQL命令修改表后,自动修改狐表中的Table,以使显示的表与保存的表一致!
    或许有人说狐表操作表的功能很强大,我为什么这么关注SQL命令。但我的看法是,在狐表中大量使用SQL与狐表并不矛盾,有时候用狐表的操作表方法很方便快捷,有些时候用SQL命令会更快更方便,贺老师以前说过,在查询的时候,SQL查询的速度非常快,这是天生的。我以前提供的那个查询职位不重复的年龄最大的列表,我实地测试了一下,同样的数据,用论坛上老师的办法即狐表的命令需要30多秒,但用SQL查询只需要不到20秒,所以,在很多时候,在狐表中运用SQL命令是很必要的,两者结合好了,不但不会影响狐表的功能发挥!而且会使狐表应用得更好!
   补充:再说,SQL server本身并不支持面向对象的开发,所以,狐表对SQL查询支持得好了,只会使狐表的功能更强大,支持的人更多,而根本不用担心大家只用SQL查询不用狐表的问题。
[此贴子已经被作者于2009-5-18 11:51:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/14 13:34:00 [显示全部帖子]

以下是引用菜鸟foxtable在2009-5-14 13:13:00的发言:

呵呵,我的项目也是大量使用SQL命令....感觉方便快捷...图片点击可在新窗口打开查看

     所以,在这种情况下,如果系统提供一个类,能够一次执行多行SQL命令,则效率会更高,使用会更方便!在狐表中,需要一次执行多条SQL命令的情况很常见,例如为了用SQL语句得到一个查询结果,需要先对表进行一些操作,而这些操作的中间过程并没有什么意义,单纯是为了最终的查询;或者在表中,先插入一行,然后对该行的某些数据进行修改。
    当使用网络版尤其是远程网络的时候,在很多时候,如果用狐表的数据库方法操作数据,需要不停的加载表,而用SQL语言操作数据则可以很好的解决这个问题,所以当狐表应用在远程网络版时使用SQL语言更方便。
   另一方面,狐表的查询统计功能再强大,终究是有限的;但如果能够对SQL语言提供更好的支持,则狐表的查询统计功能会变得无限!可任意扩展!或者说狐表增强对SQL语言的支持,会使狐表作为一个开发工具的可扩展性更强,也是间接的使狐表的功能的功能更强大!


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/14 15:26:00 [显示全部帖子]

    SQL语言是数据库操作语言,它不是一种高级语言,无论采用哪种语言,一般都可以把SQL语言作为高级语言的补充.所以,好像不能把SQL语言和高级语言放在一起作比较吧?
    贺老师说这个不是他能决定的,看能否想想变通的办法.或许VB.net中执行SQL语言是一条一条的,看能否在狐表中提供一个类,允许一次定义多条SQL语句,即使在系统内部是一条一条执行的,只要用户在编码的时候可以定义一次,执行多条语句即可.(就像狐表中执行一个语句,例如运算一个狐表定义的非VB的函数,在VB内部可能要执行多条语句).不知我说明白了没有,我感觉这个思路应是可以实现的.
  

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/14 17:07:00 [显示全部帖子]

以下是引用cpayinyuan在2009-5-14 15:26:00的发言:
    SQL语言是数据库操作语言,它不是一种高级语言,无论采用哪种语言,一般都可以把SQL语言作为高级语言的补充.所以,好像不能把SQL语言和高级语言放在一起作比较吧?
    贺老师说这个不是他能决定的,看能否想想变通的办法.或许VB.net中执行SQL语言是一条一条的,看能否在狐表中提供一个类,允许一次定义多条SQL语句,即使在系统内部是一条一条执行的,只要用户在编码的时候可以定义一次,执行多条语句即可.(就像狐表中执行一个语句,例如运算一个狐表定义的非VB的函数,在VB内部可能要执行多条语句).不知我说明白了没有,我感觉这个思路应是可以实现的.
  

跑题了吧!排行榜的事不是我们能够决定的,只要适合我们就行。
希望下次的排行上FoxTable榜上有名!
还是请贺老师研究这个贴子的正题吧。

[此贴子已经被作者于2009-5-14 17:45:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/14 18:01:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-5-14 17:57:00的发言:
foxtable属于vb系列,上不了排行榜的。

图片点击可在新窗口打开查看

我们不上胡润的排行榜,只让用户的排行榜即可.

贺老师,还是希望您关注一下我提的问题,我感觉可以实现.基本思路就是新定义一个类,允许用户一次性定义多条SQL语句,(而不用每定义一个语句就定义一个SQLcommand),系统内部把这些SQL语句再逐句执行,难道不可以吗?

[此贴子已经被作者于2009-5-14 18:01:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
[求助]  发帖心情 Post By:2009/5/14 18:08:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-5-14 18:05:00的发言:


没有必要了,现在挺好:
cmd.commandtext= "ddd"
cmd.execute
cmd.commandtext= "yyyy"
cmd.execute
cmd.commandtext= "333"
cmd.execute

如果按你说的,就是
cmd.commandtexts.Add("222")
cmd.commandtexts.Add("ffffg")
cmd.commandtexts.Add("ddd")
cmd.Execute

省了几个Execute而已,没有意义,完全不值得去考虑。

你是说,只要定义一个Sqlcommand,只要每一个语句后面跟一下execute即可?帮助中好像没有这样的事例,全部都是一个Sqlcommand执行一次execute,如果这样可以,改进的必要就是不大了.

[此贴子已经被作者于2009-5-14 18:11:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/14 18:15:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-5-14 18:05:00的发言:


没有必要了,现在挺好:
cmd.commandtext= "ddd"
cmd.execute
cmd.commandtext= "yyyy"
cmd.execute
cmd.commandtext= "333"
cmd.execute

如果按你说的,就是
cmd.commandtexts.Add("222")
cmd.commandtexts.Add("ffffg")
cmd.commandtexts.Add("ddd")
cmd.Execute

省了几个Execute而已,没有意义,完全不值得去考虑。
软件不能太累赘、太重复。

[此贴子已经被作者于2009-5-14 18:06:33编辑过]

      如果这样可以,直接把SQLcommand改进一下,同时支持两种方式岂不更好?虽然您感觉不值得去考虑,但是改动应该很简单,变动很小,改进后编制代码时会节省一些我们的时间.


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/18 11:40:00 [显示全部帖子]

以下是引用cpayinyuan在2009-5-14 12:50:00的发言:
       另外,以前我提过一个问题,就是如果使用SQL命令修改了表,并不会立即显示在表中,必须重新加载表才会显示,所以,在这种情况下就需要反复的使用Load命令加载表,在实际中很不方便,又影响速度,看能否改进一下,用SQL命令修改表后,自动修改狐表中的Table,以使显示的表与保存的表一致!
   

    贺老师,这个能不能想办法实现?
   另外,除了这个,使用SQL更新数据还有一个比较麻烦的问题,就是DataList的显示与数据库中的表,狐表中的表相互都不同步!.如果使用狐表的命令编辑表,不但会立即显示在Table中,而且会立即显示在DataList中(不需要使用DataList的build),即修改表时在保存之前就已经显示在Table中和DataList中,所以,仅需要再保存一下即可.而若用SQL命令更新表,表更新后不但不会更新Table,而且,即使使用Load命令重新加载表,加载后的表也不会同步更新DataList,如果想要把更新后的表显示在DataList中,需要把Datatable重新加载后,再重新加载一次DataList(即再build一次).而DataList的Build又非常非常慢,这样既麻烦又浪费了大量时间!
    尽管如此,当多用户联网使用时,使用SQL命令编辑数据仍然有着很大的优势,所以,希望狐表能够提供对SQL命令的进一步支持!

[此贴子已经被作者于2009-5-18 11:43:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/18 12:08:00 [显示全部帖子]

以下是引用cpayinyuan在2009-5-18 11:40:00的发言:

    贺老师,这个能不能想办法实现?
   另外,除了这个,使用SQL更新数据还有一个比较麻烦的问题,就是DataList的显示与数据库中的表,狐表中的表相互都不同步!.如果使用狐表的命令编辑表,不但会立即显示在Table中,而且会立即显示在DataList中(不需要使用DataList的build),即修改表时在保存之前就已经显示在Table中和DataList中,所以,仅需要再保存一下即可.而若用SQL命令更新表,表更新后不但不会更新Table,而且,即使使用Load命令重新加载表,加载后的表也不会同步更新DataList,如果想要把更新后的表显示在DataList中,需要把Datatable重新加载后,再重新加载一次DataList(即再build一次).而DataList的Build又非常非常慢,这样既麻烦又浪费了大量时间!
    尽管如此,当多用户联网使用时,使用SQL命令编辑数据仍然有着很大的优势,所以,希望狐表能够提供对SQL命令的进一步支持!

[此贴子已经被作者于2009-5-18 11:43:15编辑过]

补充:我总结一下,目前的狐表中用SQL命令直接修改表,并显示到DataList中需要以下3步:
(1)使用Update 或 Insert 修改数据或增加行.
(2)使用Datatables("表名").load重新加载表
(3)使用DataList的build重新加载数据列表.(加载时还需要考虑DataList的加载条件).

   但若使用狐表的操作表的命令,第2步和第3步都是不需要的(由系统自动完成),仅需要保存表一次即可.
所以,我建议在使用Sql命令操作表时,第(2)步和第(3)步能否也由系统自完成,这样可以节约大量的时间.尤其是第3步,DataList 的Build非常慢,如果系统能只把数据表文件中变化的行的数据自动重写到Table/DataTable/DataList中,可以节约大量的时间.


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/18 12:36:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-5-18 12:30:00的发言:

1、看来你的DataList是邦定到DataTable的,那么有2就行。
2、不管是Table还是DataTable,数据都是和DataTable同步的。

好像不太对.我用SQL命令修改了表,这时候显示的表没有改变,然后用Load重新加载表, 表中的数据变了,但DataList中的数据仍然没有变,只有重新build之后,DataList的数据才改变.(备注:我的DataList绑定的表不是在窗口中设置的帮定,是在进入窗口事件中用代码设置的绑定,不知是否与这个有关系?


 回到顶部
总数 14 1 2 下一页