System.Data.OleDb.OleDbException 未处理:不是有效路径

Posted

技术标签:

【中文标题】System.Data.OleDb.OleDbException 未处理:不是有效路径【英文标题】:System.Data.OleDb.OleDbException was unhandled: is not a valid path 【发布时间】:2013-07-30 14:15:19 【问题描述】:

这是我第一次尝试从服务器访问数据库文件。如果在本地运行程序没有问题

我在服务器上存储了 ms 访问文件,并尝试从我的笔记本电脑上运行程序,但收到以下错误....

System.Data.OleDb.OleDbException was unhandled is not a valid path.  Make sure that the path 
name is spelled correctly and that you are connected to the server on which the file resides.

我的连接字符串看起来像这样...

myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=H:\name-SERVER\SHAREDFILES\FileRDB.mdb; Jet OLEDB:System Database=system.mdw");

有服务器的用户名和密码。我应该在连接字符串中包含这个吗?

Stacktrace 看起来像这样...

System.Data.OleDb.OleDbException was unhandled
   is not a valid path.  Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
  Source=Microsoft JET Database Engine
  ErrorCode=-2147467259
  StackTrace:
       at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
       at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.OleDb.OleDbConnection.Open()
       at MALHRManagementSystem.FrmLogin.btnLogin_Click(Object sender, EventArgs e) in C:\Users\username\Desktop\Project\foldername\foldername\foldername\Form.cs:line 40
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at somefilename.Program.Main() in C:\Users\username\Desktop\Project\foldername\foldername\foldername\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

请有人告诉我如何纠正这个问题。

提前致谢

我不确定我应该为这个线程使用什么标签,但如果我在这里错了,请更正它。

db 是 MS-Access 2003 和 Visual Studio 2010

【问题讨论】:

如果您将文件路径放在文件资源管理器中,它会指向您的数据库吗? 我不确定连接字符串是如何构造的,请使用connectionstrings.com 那个H:驱动是网络驱动吗?该驱动器映射取决于用户,因此如果您的应用程序现在以其他用户身份运行,则该映射将丢失。请改用 UNC 路径(\\server\folder)。 我没有想到文件资源管理器中的文件路径。我明天会试试,因为我不在那里。我知道的 Connectiondstrings 网站。我只是想知道在网络端是否需要做任何事情? @HansKesting - 我不知道 H: 是否是网络驱动器?我不了解 UNC 路径(\\server\folder)。您是否可以解释这项工作,建议网站等。谢谢 【参考方案1】:

这正在工作。要在 vista/Windows 7 上映射网络驱动器。右键单击我的电脑 > 映射网络驱动器 > 选择驱动器 > 单击浏览按钮。菜单显示为 Browse For Folder -- 选择共享网络文件夹。然后选择网络名称和文件夹。完成后单击确定。这就是你所要做的。如果有人感兴趣,这里有一些有用的链接...

here

here

Vista

【讨论】:

以上是关于System.Data.OleDb.OleDbException 未处理:不是有效路径的主要内容,如果未能解决你的问题,请参考以下文章