中子呀, 你可知道我的程序本身有5个以上的数据库,这个程序还要分别安装到10台以上的计算机上使用,而且各台计算机上的数据还不一样,各台计算机上的数据还要求能够互相查看,我该怎么办?我总不能让每台计算机上都安装SQL server吧。我若让共享或映射网络驱动器岂不是出现数据安全性问题了吗?即使用映射驱动器的方法,每台电脑上要映射多少驱动器? 在帮我想想办法吧,亲爱的中子! YOU May mail to me: [email protected]
to runrunrun 我也很想把数据库放到一台服务器上,做成集中式的,可这是客户的要求呀,我只能照办。 实在不行我只有用Winsock写C/S了,我也很不想那么做,老兄们,再帮小弟想想法子吧。
'这是ado方式的调用,数据源不用provider,而是用dsn,如果你配置好了dsn,肯定是ok. '多个数据库在不同机子上,就配置不同的系统dsn。 dim gcn as adodb.connection dim grs as adodb.recordset set gcn=new adodb.connection gcn.open "dsn=bookk" set grs =new adodb.recordset grs.open "SELECT * FROM userb",gcn,adlockoptimistic,adopenforwardonly
還要遠程訪問?
弄清楚系統數據源是了麼?
哪是對本機來說的!provider該用SQLOLEDB看看。。﹝。。﹝。
只有在你的电脑上运行的程序才能够使用它,别人通过网络连到你的电脑上是不能够使用你
电脑上的DSN的。
至于你所说的虚拟目录和IIS,这个概念就让人不能够理解了,这些应该都是WEB编程中的
概念,例如ASP。你不可能通过VB直接用ASP编程的方法访问在IIS中设定的虚拟目录中的ACCESS
数据库文件的。如果你一定要访问数据库的话,那么建议你别使用ACCESS,而使用SQL SERVER
这样就不存在什么问题。要知道,ACCESS只是一个桌面型的数据库,只能用于单机版本。
若这个Provider是Access,则DSN只能指向本地的一个表。
DSN对于网络中的其他用户是不可见的...
所以在用VB+ADO开发Client/Server(注意:不是Browse/Server)时,
不可能指望在客户端使用服务器上的DSN。不管是用户DSN,还是系统DSN都不行但在ASP就是另一种概念。因为一般情况下,ASP的Data Server就是
ASP的Application Server 也就是说,IIS和数据库是放在一台机器上的。
这样我们就可以在ConnectionString中这样写
ConnRemote.Open "MyDSN"
(MyDSN 是服务器上的一个系统DSN,相对于ASP的程序而言,是本地的DSN,)
That's Enough!这是因为ASP程序其实是在服务器端运行的,用户在IE中看到的,其实是ASP程序的执行结果
实际上还是在操作本地的DSN!所以,我认为你的概念有误。
应该在服务器上建ODBC数据源,在ASP中用代码访问服务器上的数据源,
(相对于ASP的执行环境-IIS,那就是本地的数据源)一定可以成功。
ODBC+Access这种形式
因为Access不能提供远程数据的访问服务,除非你把这个表共享(我想这不是你所要的):)
要在桌面用ADO访问远程数据库,
建议使用SQL Server + OLEDB 或用 ODBC指向远程的SQL Server 这都能够连接成功。
直接用OLEDB不用建DSN,直接Open "Provider=SQLOLEDB1;..."
而ODBC还要建DSN,然后在ConnString中打开DSN。我说得够明白了么希望对你有所帮忙打字真累:)
你好,我以前用的是ASP开发B/S,现在要用VB开发Clint/Server,后端要用Access数据库,我该如何用Provider进行连接?用RDS也行,可最好不在程序中用相对路径,比如说:c:\intpub\wwwroot\bookk.mdb,能不用就不用。
谢谢你
如果你一定要用Access做远程的网络数据库,C/S我认为只有共享.mdb文件这一个方法。
ADO的ConnString说穿了和ODBC的DSN一样是个指针,怎么可能指向没有数据服务的东东
不信你试试在VB中添加一个Adodc来连接一下...Provider选Jet4,只能连接在"我的电脑"里
能看见的Access数据库。但若选SQL Server,就能看到局域网内所有的SQL Server...
(能不能连接上那要看你有没有权限了)
话我已经说到这个份上了。
祝你成功,不要再用Access了。
你好,
SQL server我以前用过,但这次必须要用Access,很无奈;难道就真的没办法了吗?难道说非要逼我用Winscok写C/S程序吗?
你还是共享.mdb吧。然后用net use x: \\servername\.mdb Path
映射一个网络驱动器,象本地硬盘一样访问。
不用相对路径很Easy,在程序中写好了。但一般的需求都是不用绝对路径,
象你这样不用相对路径我还是第一次见
ConnString = "Provider=Jet 4.0 OLEDB;..."
那样的话ADO就能连接上了。或者你再找别的高手问问?...我是没辙了。Best Regards
你可知道我的程序本身有5个以上的数据库,这个程序还要分别安装到10台以上的计算机上使用,而且各台计算机上的数据还不一样,各台计算机上的数据还要求能够互相查看,我该怎么办?我总不能让每台计算机上都安装SQL server吧。我若让共享或映射网络驱动器岂不是出现数据安全性问题了吗?即使用映射驱动器的方法,每台电脑上要映射多少驱动器?
在帮我想想办法吧,亲爱的中子!
YOU May mail to me: [email protected]
这样只要在一台机器上装sql server 就行了。
这不过是一个权限分配的问题罢了你给每个用户的表分配为只能每个用户可以修改但其他用户可见,
不就everything ok了?
我也很想把数据库放到一台服务器上,做成集中式的,可这是客户的要求呀,我只能照办。
实在不行我只有用Winsock写C/S了,我也很不想那么做,老兄们,再帮小弟想想法子吧。
'多个数据库在不同机子上,就配置不同的系统dsn。
dim gcn as adodb.connection
dim grs as adodb.recordset
set gcn=new adodb.connection
gcn.open "dsn=bookk"
set grs =new adodb.recordset
grs.open "SELECT * FROM userb",gcn,adlockoptimistic,adopenforwardonly
这句话有问题!!!我曾经作过一个系统,从一个县城的营业点写数据到一个地区(比如桂林)sql数据库应该说这是一个写广域网的sql数据库
这样的话数据库的安全一点保障都没了!!
clint-----IP----->server(计算机)--->odbc---->dsn---->数据库(*.mdb)
这种形式行不通吗?
clint-----IP----->server(计算机)--->odbc---->dsn---->数据库(*.mdb)
这种形式行不通吗?
我说得不太严密...也许我应该说得详细一点。
局域网,同一域内所有被配备成命名管道连接的SQL Server
可以被Adodc和SQL Server企业管理器看到
广域网和域外被配成TCP/IP连接方式的SQL Server可以打IP连接上,但是看不到这样你满意了?*_*coolyangbo:
说到映射,我想可以通过NT或Novell的域用户安全机制来代替数据库安全机制
即无权使用程序的用户也无权通过网络使用这个数据库文件!
这样会不会好些?Mr.陈进:
再说一次,ODBC的DSN只在本机上可见,在网络上的其他机器上是看不到其他机器
的DSN的。所以这种形式一定行不通