Foxtable(狐表)用户栏目专家坐堂 → [讨论] 关于外部数据源问题,如何解决?


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

主题:[讨论] 关于外部数据源问题,如何解决?

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/12/11 17:27:00 [只看该作者]

以下是引用wcs在2008-12-11 17:15:00的发言:
用户一天换一个数据源,数据源的地址都不在项目目录中。设置这个还有什么意义?这个扩展属性适用于相对固定、有限选择的情况。
如果频繁地变化数据源名称和地址,而且不是有限范围内选择不同的数据源和地址,不如手工设置数据源哦。
帮助中的那个我看过多遍。
[此贴子已经被作者于2008-12-11 17:23:57编辑过]


呵呵,不在项目中的手工输入即可。
难道用别的方式就不用输入或选择吗?


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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/12/11 18:01:00 [只看该作者]

老大的意思是用扩展属性设置连接字符串中的所有信息,一段段地设置?

全部手工输入?而且是在项目打开的时候?

这样用户使用时是很有难度的,他们基本没有数据库的概念,需要在使用过程中提示,比如什么会计软件的数据库名可能是什么样的、可能存在哪里、一个数据库里有几个年度的账、数据库密码可能是什么、系统数据库可能在哪里名称是什么等等。

何况数据库和软件版本太多,难以组合成需要的连接字符串的。

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


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/11 19:24:00 [只看该作者]

BeforeConnectOuterDataSource
是连通数据库。作用不是返回数据库的信息,如数据表,用户名...等等


Beforeloadoutertable
才是写sql语言返回数据库的相关信息。

(以上我应没有说错吧?)

图片点击可在新窗口打开查看二位都不知在争什么.....
[此贴子已经被作者于2008-12-11 19:32:02编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/12/11 19:42:00 [只看该作者]

是的啊!

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


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/12 20:20:00 [只看该作者]

今天有时间,在命令窗口中试了下,都成功(foxtable对sql server 支持算不错,可惜现在仅仅是用于开发sql server (这点不满意永久保留:foxtable只是用sql server用户的福音,不是其他数据库用户的福音):

返回数据库的表名:
Dim cmd As New SQLCommand
cmd.C on nec tion Name ="tu"
Dim dt As DataTable
cmd.CommandText = "select name from sysobjects where type='U'"
dt = cmd.ExecuteReader()
For Each dr As Datarow In dt.Datarows
    Output.Show(dr("name"))
Next



返回数据库名:
Dim cmd As New SQLCommand
cmd.Co nne ctio nN ame ="tu"
Dim dt As DataTable
cmd.CommandText = "SELECT DB_NAME() AS base"
dt = cmd.ExecuteReader()
For Each dr As Datarow In dt.Datarows
    Output.Show(dr("base"))
Next

[此贴子已经被作者于2008-12-12 20:33:18编辑过]

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


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/12 20:23:00 [只看该作者]

因论坛的限制 Co nne ctio nN ame 只能用空格了,,,,

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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/12/12 22:06:00 [只看该作者]

谢谢,学习了

其实SQL里有很多东西我们还不熟悉,比如你说到的返回所有的数据库名 和 所有的数据表名。

狐表会根据不同的数据源支持不同的SQL查询语言,所以在使用时,对于ACCESS与sqL会有点不同。

可是,现在我的问题是____灵活地连接不同结构的数据库,比如:sql  .mdb  oracle 等等,具体指连接字符串生成器中的所有数据库。

所谓灵活地连接,指打开项目时先不连接任何数据库,在不关闭内部表的情况下,根据用户要求,使用代码合成连接字符串加载不同结构的数据库。

说到底这是启动顺序的问题,这个问题比较特殊,目前狐表还不能在先加载了内部表以后再连接外部数据源,可我得根据用户的窗口选择来合成连接字符串(或打开生成器)。

至于要查询各种数据库中的什么表、什么字段、用什么条件,我心中有数,不过有了 gdtgl  的这两个返回所有的数据库名 和 所有的数据表名的例子,我分析数据库的速度快很多!

老大说要在一个项目中根据用户要求自由选择加载各种结构不同的数据库,不太现实,这个是特例。可我觉得既然狐表建立在.NET2.0的基础上,这个是没有问题的。目前我正在用的项目文件就是同时加载了两种数据库,运行良好!

不过,老大提了一个解决方案__用多个项目文件来连接不同结构的数据库,毕竟主流的数据库不是很多!这样也算是一个方法但生硬了一些,不太专业。

 回到顶部
总数 17 上一页 1 2