Foxtable(狐表)用户栏目专家坐堂 → 关于和Web数据源的问题


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

主题:关于和Web数据源的问题

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
关于和Web数据源的问题  发帖心情 Post By:2023/8/18 10:33:00 [显示全部帖子]

在Web数据源出现之前,如果要开发基于互联网的管理系统,须使用SQL Server,现在我们也可以用Access了,大大简化服务端的搭建和准备工作,当然由于Access的并发量和负载能力都有限,所以仅适合搭建一些中小型的管理系统,大的管理系统依然应该采用SQL Server数据库。
问题1:CS项目也可以使用Web数据源?
问题2:Web数据源是可以不用云服务器,本地服务器、局域网,实现异地,跨市、跨省连接,实现数据共享?
问题3:CS项目Access,局域网是不是也可以用Web数据源,这样就不用Access的数据库的文件在局域网里共享?
问题4:从帮助上,没讲如何对Web数据源安全,如下面,都这么了然
图片点击可在新窗口打开查看

例如:

If e.Name = "Orders" Then
    Dim sb As New StringBuilder
    sb.AppendLine("http://127.0.0.1/DataServer.htm")
    
sb.AppendLine("-FormData-")
    sb.AppendLine("UserName:张三")
    sb.AppendLine("Password:888")
    e.ConnectionString = sb.ToString()

End
 If

运行过程中创建和修改Web数据源

可以在运行过程中创建一个Web数据源,例如:

Dim sb As New StringBuilder
sb
.AppendLine("http://127.0.0.1/DataServer.htm")
sb
.AppendLine("-FormData-")
sb
.AppendLine("UserName:张三")
sb
.AppendLine("Password:888")
Connections
.Add("Sales",sb.ToString)

你也可以在运行过程中修改Web数据源的属性,例如:

Connections
("Orders").DataServer = "http://127.0.0.1/DataServer.htm"
Connections
("Orders").FormData("UserName") = "李四"
Connections
("Orders").FormData("PassWord") = "999"
Connections
("Orders").FormData("AccessToken") = "asgkfd9is45" '添加一个新的表单项

问题5:用ADO技术连接,也可以使用Web数据源?

问题6:使用Web数据源,要用狐表,

6.1开发时:开发一个客户端,一个服务端,客户端开发时,包括业务事件,数据库,连接服务器事项,服务端开发只做数据,服务器开启界面?

6.2项目发布时,客户端安装在每个用户电脑(只包含业务事件,连接服务器数据源连接事件,不用包含数据库,因为数据库在服务器在服务端客户端连接服务器即可运行操作,日常业务处理?




[此贴子已经被作者于2023/8/18 10:34:33编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/18 11:25:00 [显示全部帖子]

官方的QQClien,QQServer就是web数据源实例?

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/18 11:44:00 [显示全部帖子]

问题5:用ADO技术连接,也可以使用Web数据源?
开发时:开发一个客户端ADO技术连接,一个服务端用下面内置,这样是否可以?
图片点击可在新窗口打开查看
另:开发一个客户端用上面内置,对以窗口开发比较不友好,有以下问题:
1.特别是关联表,关联表只在一处显示,由于业务需要,要另处显示,就是出现异常,主表与明细表的数据显示不致,常只见主表数据,不见明细的数据,勉励可以模拟关联,但还是有时也有异常;
2.项目启动,窗口启动,由内置把表加载狐表上,发布需对其进行限制,不限制项目运行会很慢,项目大,业务表多,这个业务逻辑,和处理比较杂复,也是常出现异常。

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/18 14:41:00 [显示全部帖子]

问题一:下面12是外部服务端?还是用户内部服务端(服务器电脑)?是一种连接方法

1、首先我们在服务端的AfterOpenProject事件中加上以下代码,用于开启Web服务:

HttpServer.Prefixes.Add("http://*/")
HttpServer.WebPath = 
"d:\web"
HttpServer.Start()

如果你的服务端项目仅用于提供数据源服务,那么第二行代码可以删除。

2、假定服务器已经安装了SQL Server,有一个名为Sample的数据源,我们现在建立一个数据源连接到这个数据库,使用生成器生成连接字符串的设置如下图:


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/18 14:41:00 [显示全部帖子]

问题二:这里4编号是错,应是3服务端建立的本地数据源的,是指开发者的服务端?因为2、假定服务器已经安装了SQL Server4、假定服务端建立的本地数据源的名称,都是企业内部服务器本地数据源?还是有区别?

4、假定服务端建立的本地数据源的名称为"Orders",现在将HttpRequest事件代码设置为

Dim Verified As Boolean
If
 e.PostValues.ContainsKey("username"AndAlso e.PostValues.ContainsKey("password"Then
    '实际开发的时候,请改为根据用户表验证身份
    
Dim username As String  = e.PostValues("username")
    
Dim password As String  = e.PostValues("password")
    
If username = "张三" AndAlso password = "888" Then
        Verified  = True
    End If
End
 If
If
 Verified = False Then
    e.AppendCookie("Error","用户身份验证失败!"'通过Cookie返回错误信息.
    
Return
End
 If
Select
 Case e.Path
    
Case "DataServer.htm"
        e.AsDataServer("Orders")  '将一个本地数据源公开为Web数据源
End
 Select


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/18 14:44:00 [显示全部帖子]



图片点击可在新窗口打开查看此主题相关图片如下:问题三.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/21 11:50:00 [显示全部帖子]

服务端的代码

AfterOpenProject事件

Forms("Server窗口").Open()


Forms("用户登录").Open()
If _UserName = "" Then
    Syscmd.Project.Exit()
    Return '这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
End If


'HttpRequest事件
Select Case e.Path
    Case "DataServer.htm"
        e.AsDataServer("Northwind")
    Case "user.htm"
        e.AsDataServer("user")
End Select


客户端

'BeforeConnectOuterDataSource事件
If e.Name = "Northwind" Then
    Dim sb As New StringBuilder
    sb.AppendLine("http://192.180.0.101/DataServer.htm")
    sb.AppendLine("-FormData-")
    sb.AppendLine("UserName:张三")
    sb.AppendLine("Password:888")
    e.ConnectionString = sb.ToString()
End If


If e.Name = "user" Then
    Dim sb As New StringBuilder
    sb.AppendLine("http://192.180.0.101/DataServer.htm")
    sb.AppendLine("-FormData-")
    sb.AppendLine("UserName:张三")
    sb.AppendLine("Password:888")
    e.ConnectionString = sb.ToString()
End If



'AfterOpenProject

Forms("用户登录").Open()
If _UserName = "" Then
    Syscmd.Project.Exit()
    Return '这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
End If



ACCESS数据源


执行服务端,没 报错,执行客户端,报错连接不到数据源,连接不到服务器数据源,如何解决?实际上服务端、客户端都有连接数据源,在开发阶段还没发布-测试,



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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/21 13:27:00 [显示全部帖子]

在同一台电脑运行

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/21 14:39:00 [显示全部帖子]

1.调用步骤一的代码启动服务端服务了吗?http://www.foxtable.com/mobilehelp/topics/283.htm

服务端的代码

AfterOpenProject事件

Forms("Server窗口").Open()

Server窗口上的“启动”键的单击事件:
用了官方QQServer的实例
'QQ服务端 - QQServer窗口 - 启动按键事件
QQServer.ServerIp = e.Form.Controls("txtIP").Value '指定IP地址
QQServer.ServerPort = e.Form.Controls("txtPort").Value '指定端口
QQServer.HeartbeatInterval = e.Form.Controls("txtInterval").Value '指定心跳时间
QQServer.HeartbeatTimeout = e.Form.Controls("txtTimeOut").Value '指定心跳超时时间
QQServer.Start() '启动QQServer
PopMessage("服务器已启用!","提示",PopIconEnum.Infomation,5)


2.
客户端在数据源设置里设置是否测试通过?
客户端测试有上面图
http://192.180.0.101/DataServer.htm
-FormData-
UserName:张三
Password:888
3.
'BeforeConnectOuterDataSource事件
If e.Name = "Northwind" Then
    Dim sb As New StringBuilder
    sb.AppendLine("http://192.180.0.101/DataServer.htm")
    sb.AppendLine("-FormData-")
    sb.AppendLine("UserName:张三")
    sb.AppendLine("Password:888")
    e.ConnectionString = sb.ToString()
End If


If e.Name = "user" Then
    Dim sb As New StringBuilder
    sb.AppendLine("http://192.180.0.101/DataServer.htm")
    sb.AppendLine("-FormData-")
    sb.AppendLine("UserName:张三")
    sb.AppendLine("Password:888")
    e.ConnectionString = sb.ToString()
End If
UserName:张三:是数据库的帐号?还是用户名?
Password:888:是数据库的密码?还是用户名的密码?
是需验证才有,不做验证不写

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/21 14:49:00 [显示全部帖子]

文字表述有些抽象,上传实例,你帮改一下,可以?谢谢

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