在WebService中为何连接不上Access数据库?
我用C#在客户端窗体程序中连接Access数据库,使用的是
string source = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyDB.mdb;User Id=;Password=;";
连接正常且能够取回数据,现在我把代码放到服务器端WebService程序中,结果总是出现如下错误:
_message "System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.TypeInitializationException: “Beauty.DataAccess.DBAccess”的类型初始值设定项引发异常。 ---> System.ArgumentException: 连接字符串 provider 中未知的连接选项。
at System.Data.SqlClient.ConStringUtil.ParseStringIntoHashtable(String conString, Hashtable values)
at System.Data.SqlClient.ConStringUtil.ParseConnectionString(String connectionString)
at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
at System.Data.SqlClient.SqlConnection..ctor(String connectionString)
at Beauty.DataAccess.DBAccess..cctor() in e:\inetpub\wwwroot\beautyparlor\dataaccess\dbaccess.cs:line 22
--- 内部异常堆栈跟踪的结尾 ---
at Beauty.DataAccess.DBAccess.Login(LoginInfo info)
at Beauty.Beauty.Login(LoginInfo info, LoginInfo& actorInfo) in e:\inetpub\wwwroot\beautyparlor\beauty.asmx.cs:line 167
--- 内部异常堆栈跟踪的结尾 ---" string
在客户端好好的,为什么在服务器却总失败,而且我的服务端与客户端都是在我的本地器上。
是连接字符串错误码?
问题点数:20、回复次数:10Top
1 楼net_lover(【孟子E章】)回复于 2006-03-04 14:36:49 得分 0
D盘在虚拟目录下吗?一般说权限引起的。可以将mdb文件放在虚拟目录或者站点下。然后用
string source = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("MyDB.mdb");Top
2 楼abob()回复于 2006-03-04 22:37:02 得分 0
能具体说一下权限的问题么?Top
3 楼fsxdxh(假行僧)回复于 2006-03-05 11:04:05 得分 0
问题解决了,谢谢net_lover(孟子E章) 。不过遇到了新的问题。
我查询数据很正常了,但在插入数据时却提示我“{"INSERT INTO 语句的语法错误。" }”。而实际上我把这条语句在Access中直接执行是可以成功的,但在下面的语句中却总是不成功,请问这是什么原因?
select = "INSERT INTO MUser(LoginID, Password,Creator,UserType) values ('dd','df','dk',0)"
cmd = new OleDbCommand(select, conn);
cmd.CommandType = CommandType.Text;
int nRet = cmd.ExecuteNonQuery();Top
4 楼Knight94(愚翁)回复于 2006-03-07 16:07:02 得分 10
还是权限的问题,当前webservice目录,asp_net用户是否能对它可以写,如果可以写的话,才能对数据库进行操作,否则只能查询。Top
5 楼fsxdxh(假行僧)回复于 2006-03-08 21:25:13 得分 0
请教一下Knight94(愚翁) ,由于本人对IIS配置不太懂,能否告知是怎样配置此权限的?
Top
6 楼Knight94(愚翁)回复于 2006-03-09 08:32:19 得分 0
不是在iis中,而是在explorer中,选中web目录所对应的实际目录,在它的属性中,选择安全(security),然后添加aspnet用户,并给它赋予可写权限,这样就可以了。Top
7 楼fsxdxh(假行僧)回复于 2006-03-11 23:32:46 得分 0
我已经设了asp.net的权限(写入和修改都设了),但是还是不行,但是奇怪的是执行delete语句却成功了,不知是何故,请教!Top
8 楼astra1(Hyperion)回复于 2006-03-12 00:52:31 得分 10
是你的sql语句问题
INSERT INTO MUser(LoginID, Password,Creator,UserType) values ('dd','df','dk',0)"
password是access的保留字,用[]包起来
最好象这样
INSERT INTO MUser([LoginID], [Password],[Creator],[UserType]) values ('dd','df','dk',0)"
试试Top
9 楼fsxdxh(假行僧)回复于 2006-03-19 11:04:50 得分 0
谢谢astra1(Hyperion) 。总是解决了。Top
10 楼mmens(快乐中前行!)回复于 2006-03-24 09:28:15 得分 0
:)Top




