关于C#连接远程access数据库的一点问题

yunxiang_myx 2015-01-05 08:30:37
最近用C#winform做了一个上传本地数据到服务器数据库(ACCESS)的对话框程序,做完后,基本可用。

但在测试过程中也发现了一些不了解的问题,特发贴请教。

软件是在XP环境下用VS2010完成的,服务器系统是SERVER2008R2,测试机有两台,一台是服务器,一台是同网络下的XP系统(当作服务器)。
测试了三种情况:
1、在XP系统服务器下,第一次设置登录用户名和密码,测试连接数据库成功,并能完成上传数据。
2、第二次XP系统不设密码,则连接数据库不成功,提示“Microsoft Jet数据库引擎打不开文件‘\\IP地址\共享文件夹\数据库’。它已经被别的用户以独占方式打开,或没有查看数据的权限”错误。

3、在Server2008系统服务器下,系统有密码。直接测试连接,就出现上述错误提示。但在通过在本机开始->运行中输入"\\IP地址"再输入用户名和密码,打开服务器上的共享文件夹后,再测试连接,则能成功,并能成功上传数据到服务器。

服务器系统密码不能随便取消,也就没有测试不设密码的情况了。

现就上述情况,请教做过类似功能的朋友,Server2008系统下如何能够直接连接成功?而不是要先通过运行连接成功后,再提交数据。
或者是我的Server2008系统服务器上的共享文件夹设置不对?数据库确定是用access,不能更换的。


...全文
517 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunxiang_myx 2015-01-16
  • 打赏
  • 举报
回复
结贴!问题还是没有解决!不是技术达人深究不了。回贴人人有分!13楼的方法有时间了再试吧。非常感谢各位关注我的问题!
yunxiang_myx 2015-01-07
  • 打赏
  • 举报
回复
其实程序功能很简单,就是提交客户机端的电脑硬件信息,最关键的是这几个,硬盘型号,硬盘SN,MAC地址,IP地址,前面已经做了一个C/S的,也可以提交信息,但发现通过JS不能正确获取硬盘SN(8位的那个编码),才想到做成一个单提交数据的程序,再通过网页查看数据. 在网上查了,JS获取不到硬盘SN,一般通过*.Model获取到的只是硬盘的型号。如果有JS的高人也可以告诉下哦。那就只改下原来的C/S代码就行了。
宝_爸 2015-01-07
  • 打赏
  • 举报
回复
看我6楼的回复了吗?用stored user names and passwords可以记住密码,在control panel里面。
於黾 2015-01-07
  • 打赏
  • 举报
回复
如果就是不想换,而且机器固定,客户端也不会在新机器上安装,那么你登陆系统之后,有个"记住密码"的选项,点了之后,即使重启下次再访问也会自动登陆,不需要手动操作了 因为是共享文件夹方式,你要登陆共享文件夹肯定需要输入用户名密码才会有权限访问,默认是只要登陆过一次,客户机不重启的话,下次再登陆就不需要再次输入用户名密码,这个你可以用命令行\\IP来验证
yunxiang_myx 2015-01-06
  • 打赏
  • 举报
回复
现在情况是XP系统下,2008系统下,都可以提交数据到数据库! 关键问题在于,2008系统下的数据库,必须要先通过开始->运行:\\IP地址,输入2008系统的用户名和密码连接并打开那个共享文件夹,再关闭。什么都不做,然后就可以成功连接到数据库,也不提示出错,并且能够提交数据到数据库啦。 (通过上述操作,感觉是本地用户有权限访问数据库了,然后程序才能通过.) 而如果不进行上述打开共享文件夹的操作,直接提交数据,就提示出错。错误在顶楼有说明。 我想知道的是,为什么我必须要先通过运行打开共享文件夹,再提交数据,而不是直接提交数据。可能与2008的共享文件夹设置有关系,但我在添加internet来宾帐户时,也提示未能找到Internet来宾账户。 我感觉与访问权限这块有关系,但就是不知道问题出在那里。 还请内行关注!!!!! 实在不行只有换数据库了,但是一个非常小的数据,个人感觉没必要用SQLSERVER.
S314324153 2015-01-06
  • 打赏
  • 举报
回复
Access 这种轻量的数据库,都是本地用的
宝_爸 2015-01-06
  • 打赏
  • 举报
回复
建议使用sql server express,也是免费的。
宝_爸 2015-01-06
  • 打赏
  • 举报
回复
看起来是权限问题, 如果web server和access文件所在服务器在一个域中,比较简单。设置一个域帐号,有权限操作access文件,然后在IIS中设置web site的application pool由这个域帐号运行即可。 如果不是域,我们有个老的系统在win2003上是使用的 stored user names and passwords来解决的,把有权限访问access的账户保存在这里。 win2008应该在这里配置: Control Panel\User Accounts\Credential Manager
於黾 2015-01-06
  • 打赏
  • 举报
回复
引用 4 楼 sxldfang 的回复:
用B/S结构试一下,方便~~~
做成网站,使用access数据库也不是很靠谱吧
sxldfang 2015-01-06
  • 打赏
  • 举报
回复
用B/S结构试一下,方便~~~
於黾 2015-01-06
  • 打赏
  • 举报
回复
换个数据库,用mysql等支持远程访问和连接池的数据库,access本质上就是一个文件,你远程共享文件夹操作文件或多线程访问,都会有各种问题
yunxiang_myx 2015-01-06
  • 打赏
  • 举报
回复
WebService?不太了解,看来还是要深入学习下啊。
flien1 2015-01-05
  • 打赏
  • 举报
回复
不能直接读取写入远程Access 这玩意是单线程。 建议使用WebService来操作,这样就可以保证只有1个线程能访问Access。也可以更好的理解Soa。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧