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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/14 14:58:00 [显示全部帖子]

以下是引用cpayinyuan在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-14 13:01:03编辑过]

目前最流行的编程语言排行

关键词编程    编程语言    排行                                          

Position
May 2006
Position
May 2005
Delta
in Position
Programming Language Ratings
May 2006
Delta
May 2005
Status
1 2 Java 21.316% +3.92% A
2 1 C 17.690% -0.83% A
3 4 C++ 10.935% +1.03% A
4 5 PHP 10.220% +1.02% A
5 6 (Visual) Basic 9.564% +1.93% A
6 3 Perl 6.050% -4.53% A
7 7 C# 3.271% +0.50% A
8 8 Python 3.042% +0.56% A
9 11 JavaScript 2.191% +0.75% A
10 9 Delphi/Kylix 1.766% -0.48% A
11 12 SAS 1.479% +0.14% A
12 10 PL/SQL 1.011% -0.64% A
13 33 20 * Visual FoxPro 1.002% +0.72% A-
14 15 Lisp/Scheme 0.893% +0.08% A-
15 14 COBOL 0.664% -0.32% B
16 25 9 * ColdFusion 0.509% +0.14% B
17 28 11 * VB.NET 0.508% +0.17% B
18 18 Ada 0.488% -0.19% B
19 27 8 * D 0.478% +0.13% B
20 30 10 * Ruby 0.456% +0.14% B

从上表可以看出:SQL,VB.net在行家眼里,都是不入流的,
因此:
 没有最好,只有最合适的!

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/14 18:58:00 [显示全部帖子]

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

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

  嘿嘿,说了半天,不就是一个for each吗?


Dim cmd As New SQLCommand
Dim sum As Double

Dim Tj,Ts As String
Ts = "Select * From {订单} where Month(日期) = 1"
Ts = Ts & "/Select * From {订单} where Month(日期) = 3"
Ts = Ts & "/Select * From {订单} where Month(日期) = 10"

for each Tj In Ts.split("/")
    cmd.CommandText = Tj
    sum = sum + cmd.ExecuteReader().compute("sum(数量)")
Next
msgbox(sum)


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/19 13:58:00 [显示全部帖子]

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

     贺老师说得有理。但是,在使用DataList的时候,我从不画蛇添足的非要用SQL,但在有时候的确很有必要。主要是基于速度的考虑和多用户有同时操作的考虑。
     例如:在DataList中显示一个比较复杂的查询结果。不知是否还记得我上次提出的查询不重复部门的年龄最大的记录列表。我认真比较过,一模一样的数据,如果用SQL查询,需要将近20秒;如果采用论坛上老师提供的狐表加辅助列的办法用狐表的命令,则需要30多秒。同样的数据下会慢差不多一半,我不得不选择用SQL查询。当然,如果是DataList中直接查询一个表的数据,我是不会非要拐个弯用SQL查询的。
    在这种情况下,个人认为即使是一个虚拟的Datatable与DataList动态绑定,当DataTalbe数据改变的时候,DataList也应同步更新。记得当时贺老师也是这样说的,但实际上,根本不会动态更新,除非重新Build.

记得你提出的:查询不重复部门的年龄最大的记录列表,有几万条记录.
俺做了个40000条记录,800个分组的表作试验:用狐表的方法,时间为3秒.


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/19 14:32:00 [显示全部帖子]

以下是引用cpayinyuan在2009-5-19 14:29:00的发言:

有这等事?
我项目使用的情况和那个例子差不多,查询稍微复杂了一点,不过记录要少得多,只有1000多条,不过增加一步,生成后加载到DataList中,难道是加载到DataList中占用子大量的时间?但是,同样的数据,我用SQL语句生成并加载到DataList中,确实快得多。我再详细试试吧。

[此贴子已经被作者于2009-5-19 14:29:24编辑过]

俺3秒包括dst.Build()


 回到顶部