首先说明一下,我是学习易语言的,这里虽然主要是以微软工具为主,但我还是想在这里请教一下高手们,希望大家能帮我解决下,谢谢!问题如下:我的网络环境是这样的(家中),电脑是通过光纤宽带连接的,连接猫的是一个无线宽带的路由器,然后路由器上面连接的就是电脑(真实机),连接路由器后,电脑真机就处在一个局域网当中了,有自己的局域网IP,然后在电脑真机当中我建了两个虚拟机(vmware),两台虚机也都有自己的局域网IP,两个虚机是通过桥接方式与真机连接的(也可以改成NAT方式),它们都是单网卡的虚机。在一台虚机上面我建了个WEB站点(当WEB服务器用),同时这台虚机上面也装了MSSQL2005数据库。然后我在路由器上面将这台虚机设置了端口映射,做WEB服务器时,端口是80,IP写的是192.168.1.102(这台虚机的局域网地址),这时通过公网访问网页是成功的。
因为在这台虚拟机上装有MSSQL数据库,所以我又在路由器中又添加了一个端口映射,端口写的是数据库的默认端口1433,然后IP处同样写的是这台虚拟机的局域网地址(192.168.1.102)。想让别人从公网用软件客户端连接到虚拟机上的数据库。我以为这样就可以了,但是没成功!
我现在的问题是:我自已用易语言写的通过公网连接数据库的程序,在静态编译后发给别人,在别人机器上运行,却显示数据库连接失败!这是怎么回事呢?哪位朋友能帮我解决下呢?究竟怎么做我才能让程序通过公网连接数据库成功呢?
下面是我自己写的程序,试验用的(全部的代码)
.版本 2
.支持库 eDB
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
全局_数据库连接 = 数据库连接1
全局_记录集 = 记录集1
.如果真 (全局_数据库连接.连接SQLServer (“221.205.193.139”, “temp”, “sa”, “123456”) = 假)
    信息框 (“数据库没有连接成功”, 0, )
    结束 ()
.如果真结束
全局_记录集.置连接 (全局_数据库连接)
载入 (窗口1, , 真)
.版本 2
.支持库 eDB
.程序集 窗口程序集2
.子程序 _按钮1_被单击
.局部变量 局部_语句, 文本型
.局部变量 局部_数量, 整数型
局部_语句 = “select count(*) as [数量] from [用户表] where [yonghuming] ='” + 窗口1.编辑框1.内容 + “'and [mima]='” + 窗口1.编辑框2.内容 + “'”
.如果真 (全局_记录集.打开 (局部_语句, #SQL语句) = 假)
    信息框 (“查询失败”, 0, )
    返回 ()
.如果真结束
.如果真 (全局_记录集.读整数 (“数量”, 局部_数量) = 假)
    信息框 (“查询失败”, 0, )
    返回 ()
.如果真结束
.如果真 (局部_数量 > 0)
    信息框 (“查询成功”, 0, )
    载入 (_启动窗口, , 真)
    返回 ()
.如果真结束
信息框 (“查询失败”, 0, )
.子程序 _按钮2_被单击
结束 ()
希望知道的朋友能指导一下,如果方便的话,留下QQ号码等通信方式,方便交流!
大家详细帮我指导下吧!谢谢!(这个问题让我非常苦恼!)

解决方案 »

  1.   

    别人无论是访问你的web服务器还是数据库服务器,地址首先都应该是路由器获取的那个公网IP地址。
    如果你确认端口映射没有问题,那就尝试给SQL Server换一个端口吧,1433映射在外网=自寻死路啊
      

  2.   

    我用的是水星无线的路由器,在控制界面中的转发规则当中(这个就是进行端口映射的)我写的SQL2005的端口是1500(修改后的)然后,这个里面的IP地址处,我写的是局域网的地址192.168.1.102,不知道这么写行不行?上面回复的朋友再指导下吧。
      

  3.   

    这么写应该是可以了,然后你可以在外网先测试一下,在SQL Server Management Studio中,服务器地址写上你的[路由器的公网IP,1500]作为地址,看看能不能通,能通了再用程序调用
      

  4.   

    上面朋友,回复上到了,我在sql server management studio中,在连接到数据库引擎窗口中的服务器名称处,输入了公网的IP,但点确定时,却报错了。还得写成本地电脑的名称,是这个:LENOVO-83655B92\SQLEXPRESS,然后点确定数据库才能不报错。这样,能再帮我想想办法吗?你说的这个服务器地址指的是连接到数据库引擎窗口中的服务器名称这里吗?麻烦再指导下吧。谢谢!
      

  5.   

    在sql server management studio窗口左边的对象资源管理器中,右键点击正在运行的数据库,弹出的菜单中选属性时,在窗口的常规项当中,每一个都是不能修改的。另外,没有找到你说的服务器地址的地方。也不知道在哪?在服务器名称的地方是不能改成别的,不然就会报错了。迷忙的很!
      

  6.   

    这位同学我建议你好好了解一下TCP/IP协议是什么
    以及SQL Server是如何通过TCP/IP协议访问数据库的