Foxtable(狐表)用户栏目专家坐堂 → 关于外部数据源连接和用户管理方面的问题请教


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

主题:关于外部数据源连接和用户管理方面的问题请教

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
关于外部数据源连接和用户管理方面的问题请教  发帖心情 Post By:2009/6/21 9:57:00 [只看该作者]

    刚开始系统学习foxtable,并已着手用它重写一个项目。现在碰到几个问题比较困惑,请老六或其他高手帮忙解答一下。谢谢!

    1、外部数据源的连接。
    我是一直习惯将外部数据源的连接字符串采取加密方式存放在一个文本文件里的。foxtable可以在BeforeConnectOuterDataSource事件中采用读取文本文件的方法建立连接。我现在的问题是:
    如果数据库发生变动、或者该TXT文件被人为修改,导致数据库无法连接时,系统只会弹出一个修改数据源连接的对话窗。我对这个对话窗有以下困惑:第一,这里的修改只能是临时的,无法把修改后的字符串保存到TXT文件中;而文本文件中的连接字符串又是以加密方式保存的,用户无法直接对其修改,难道每次启动系统时都要这么临时设置一下?第二,在这个对话窗口中,如果不修改字符串而是直接点“取消”的话,程序将继续运行,这样就会弹出一系列的错误(即使将项目属性中的“允许设置数据源”置为假也不行)。
     如果上述问题确实存在的话,能否可以在e参数中加个判断外部数据源连接成功的方法呢?通过该方法,可以得到一个True或False的返回值。这样的话,就很好处理了:如果返回值为False,则可由用户直接设置是退出、还是修改连接字符串后并加密保存。

    2、关于用户管理。
    foxtable自带用户管理功能,请问foxtable中设置的用户如何在网络环境下使用?比如,我设置了张三、李四,并把这个程序拷贝给他们。他们在各自的电脑上操作时,管理员能通过网络直接得到他们的运行状态吗?如果我在本机上新增一个用户名,他们的客户端程序能否同时更新?
    我用的是外部数据源,对用户的管理一般是放在外部数据库中专门的表上。如果我用这种外部表来进行用户管理,foxtable能否考虑直接将外部表中的用户信息读取并融合到系统中?(可以对外部表的格式进行约定,就象约定外部表的主键名称和LOCK列一样,以便foxtable进行内部处理)。

    3、foxtable如果不用外部数据源而只用内部表的话,这个程序是不是也就只能单机使用而无法在网络上实现多人查询与编辑?
[此贴子已经被作者于2009-6-21 10:03:58编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/21 10:15:00 [只看该作者]

1、是临时的,正是的进入数据源管理修改
2、“允许设置数据源”仅对普通用户有效,设为False,在无法连接数据源的情况下,直接退出。
3、在临时设置数据源的时候,普通用户单击取消,会退出系统,开发者才会继续进入,以便提供修改数据源错误的机会。

4、foxtable是断开运行的,管理员无法获得各用户的状态,需要自己编写代码定期向后台写入数据"汇报"。
5、用户是针对项目的,对于设计好的项目,如果复制分发到各终端使用,其中一个终端增加用户,并不会影响其它终端,因为大家此时是隔开的,打开的是同一个项目文件的不同副本,共享的只是外部数据源(甚至是很多个不同目的项目共用一个或几个数据源)。一些用户采用自己的方式管理用户,新建用户表,自己设计登录窗口,这样各终端能够共享用户数据,foxtable提供了默认用户功能,使得这种设计成为可能。
6、内部表同样支持网络,前提是大家打开的是同一个项目文件。

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/6/21 10:34:00 [只看该作者]

    明白了,看来我的理解还是正确的,呵呵
    但第一个问题,老六还是没有给出很好的解决办法。

    对于以SQL数据库为后台的应用系统,现在很多人喜欢在项目完成以后,把程序直接打包给用户安装。由于用户环境的不同,SQL数据库的连接字符串也是不同的。因此,最好的方法是将这个连接字符串加密后写到配置文件里(因为字符串里包含密码等信息,是必须要加密的),在程序运行时直接读取。运行程序时如果发现字符串不正确,可以直接打开相应的窗口、并设置正确的字符串写入配置文件中。
    目前foxtable的处理方式,是没有办法做到这一点的。因为它没有判断字符串是否连接成功的方法,当然也就没有办法去定义“如果连接不成功就去执行的事件”。无法定义事件,当然也就无法完成向配置文件写内容了。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/6/21 10:38:00 [只看该作者]

要知道,项目在提交给用户以后,包括数据源设置等很多的工作是要由用户自己完成的,开发者不可能一直参与并服务用户。
而且,不论是什么级别的用户,只要加入了外部数据源是否连接成功的判断,就可以设置更多灵活的事件、完成更多人性化的操作。
[此贴子已经被作者于2009-6-21 10:39:04编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/21 10:41:00 [只看该作者]

判断某个连接字符串是否有有效的代码,也就是判断某个数据源能否接通的代码:


Dim Str1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\1234.mdb;Persist Security Info=False"
Dim Conn As New Data.Oledb.OledbConnection(Str1)
Try
    Conn.Open()
    Conn.Close()
    Messagebox.show("成功")
Catch ex as Exception
    Messagebox.show("失败")
End Try
[此贴子已经被作者于2009-6-21 10:41:48编辑过]

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/6/21 10:52:00 [只看该作者]

太需要5楼的代码了,谢谢!!

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/6/21 13:08:00 [只看该作者]

老爹又藏私了。。。学习。

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


加好友 发短信
等级:一尾狐 帖子:463 积分:3559 威望:0 精华:0 注册:2009/6/26 8:01:00
  发帖心情 Post By:2009/7/3 9:03:00 [只看该作者]

鲲!我来顶你贴了,顺便把5楼的代码copy一份!


 回到顶部