Foxtable(狐表)用户栏目专家坐堂 → 紧急求助:服务器只能用内网连接,不在内网的客户端怎么才能访问服务器的数据。。


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

主题:紧急求助:服务器只能用内网连接,不在内网的客户端怎么才能访问服务器的数据。。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/6/5 10:41:00 [只看该作者]

好,我先研究下。谢谢甜老师!

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/6/5 11:51:00 [只看该作者]

insert into select 语句基本学会,插入速度也很快。

 

但是还是要先把源数据加载到表里,

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.ConnectionName =
"数据源名称"
cmd.CommandText =
"SELECT * From {员工}"
dt = cmd.ExecuteReader()

For
Each dr As DataRow In dt.DataRows
    If
DataTables("员工").Find("身份证号码 = '" & dr("身份证号码") & "'") Is Nothing Then  如果用SQLFIND  速度会很慢,但是如果只用FIND,就必须把所有数据都加载进狐表。
        Dim
nr As DataRow = DataTables("员工").AddNew()
        For
Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next
    End
If
Next

 

如果用SQLFIND  速度会很慢,但是如果只用FIND,就必须把所有数据都加载进狐表。
不知道有没有更好的解决办法。。。。

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 11:57:00 [只看该作者]

 为什么要加载表?

 

 1、你先查出表里没有的数据;

 

 2、把查出的数据insert进去即可。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/5 12:00:00 [只看该作者]

SQL保存快,写代码又慢。

还是希望狐表能提高保存速度,其他环节都够快,卡在最后的保存上了。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 12:01:00 [只看该作者]

 如果想查找,就用sql语句先加载两个表,然后查找,然后赋值。

 

Dim cmd As New SQLCommand
Dim
dt1 As DataTable
cmd.ConnectionName =
"数据源111"
cmd.CommandText =
"SELECT * From {员工}"
dt1 = cmd.ExecuteReader()


Dim
dt2 As DataTable
cmd.ConnectionName =
"数据源222"
cmd.CommandText =
"SELECT * From {员工}"
dt2 = cmd.ExecuteReader(True)

 

For Each dr As DataRow In dt1.DataRows
    If
dt2.Find("身份证号码 = '" & dr("身份证号码") & "'") Is Nothing Then  如果用SQLFIND  速度会很慢,但是如果只用FIND,就必须把所有数据都加载进狐表。
        Dim
nr As DataRow = dt2.AddNew()
        For
Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next
    End
If
Next

 

dt2.Save


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/6/5 14:32:00 [只看该作者]

For Each dr As DataRow In dt1.DataRows
    If
dt2.Find("身份证号码 = '" & dr("身份证号码") & "'") Is Nothing Then

        Dim nr As DataRow = dt2.AddNew()
        For
Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next
    End
If
Next

dt2.Save

甜老师,你上面25楼的方法,是不是也是要保存,我刚才试了一下比较多的数据,也是很慢。

我改成用Insert Into 的方法,速度是挺快的,但是有重复。

Dim cmd As New SQLCommand

Dim dt2 As DataTable
cmd.    Name = "VIP数据2"
cmd.CommandText = "SELECT * From {VIP会员系统登录用户数据表}"
dt2 = cmd.ExecuteReader(True)

For Each dr As DataRow In dt1.DataRows
    If dt2.Find("name = '" & dr("name") & "'") Is Nothing Then
        cmd.     Name = "VIP数据2"
        cmd.CommandText = "Insert Into {VIP会员系统登录用户数据表}(name,type,config,名称) Values( '" & dr("name") & "' ,'" & dr("type") & "' ,'" & dr("config") & "' ,'" & dr("名称") & "' )"
        cmd.ExecuteNonQuery
    End If
Next


此主题相关图片如下:有重复.jpg
按此在新窗口浏览图片
[此贴子已经被作者于2014-6-5 14:37:06编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 14:45:00 [只看该作者]

 回复26楼,数据不可能重复,如果重复,也是原表的数据重复了。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/6/5 15:16:00 [只看该作者]

甜老师英明。是源数据表重复了。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/6/5 16:26:00 [只看该作者]

同步数据的方式好了。

 

现在要求我不用这种方式了。。。

 

各位老师好,

 

socket通讯,大概是什么思路呢?

 

客户端发送请求,服务端响应,将查询的数据发送给客户端?


图片点击可在新窗口打开查看此主题相关图片如下:发送的命令.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 16:31:00 [只看该作者]

 无法用socket通信,这样很麻烦的。如果要用,表数据必须一个一个传过来,然后客户端把数据取出来。

 

 客户端必须直接连接数据库,这样才不需要大改。


 回到顶部
总数 67 上一页 1 2 3 4 5 6 7 下一页