问题描述
使用OleDbConnection连接mysql数据库,代码如下:OleDbConnectionmyconn=newOleDbConnection("Provider=MySqlProv;server=xxx;userid=xxx;password=xxx;database=xxx;port=xxx");myconn.Open();
当连接本机的mysql服务器的时候连接正常,但是如果连接远程mysql服务器就会抱如下错误:未处理System.Data.OleDb.OleDbExceptionHResult=-2147467259Message=没有可用的错误消息,结果代码:E_FAIL(0x80004005)。Source=System.DataErrorCode=-2147467259StackTrace:在System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionStringconstr,OleDbConnectionconnection)在System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptionsoptions,DbConnectionPoolKeypoolKey,ObjectpoolGroupProviderInfo,DbConnectionPoolpool,DbConnectionowningObject)在System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptionsoptions,DbConnectionPoolKeypoolKey,ObjectpoolGroupProviderInfo,DbConnectionPoolpool,DbConnectionowningConnection,DbConnectionOptionsuserOptions)在System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnectionowningConnection,DbConnectionPoolGrouppoolGroup,DbConnectionOptionsuserOptions)在System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnectionowningConnection,TaskCompletionSource`1retry,DbConnectionOptionsuserOptions,DbConnectionInternaloldConnection,DbConnectionInternal&connection)在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnectionouterConnection,DbConnectionFactoryconnectionFactory,TaskCompletionSource`1retry,DbConnectionOptionsuserOptions)在System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnectionouterConnection,DbConnectionFactoryconnectionFactory,TaskCompletionSource`1retry,DbConnectionOptionsuserOptions)在System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnectionouterConnection,DbConnectionFactoryconnectionFactory)在System.Data.OleDb.OleDbConnection.Open()在WindowsFormsApplication1.Form9.button15_Click(Objectsender,EventArgse)位置D:代码程序WindowsFormsApplication1WindowsFormsApplication1Form9.cs:行号585在System.Windows.Forms.Control.OnClick(EventArgse)在System.Windows.Forms.Button.OnClick(EventArgse)在System.Windows.Forms.Button.OnMouseUp(MouseEventArgsmevent)在System.Windows.Forms.Control.WmMouseUp(Message&m,MouseButtonsbutton,Int32clicks)在System.Windows.Forms.Control.WndProc(Message&m)在System.Windows.Forms.ButtonBase.WndProc(Message&m)在System.Windows.Forms.Button.WndProc(Message&m)在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)在System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtrhWnd,Int32msg,IntPtrwparam,IntPtrlparam)在System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&msg)在System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtrdwComponentID,Int32reason,Int32pvLoopData)在System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32reason,ApplicationContextcontext)在System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32reason,ApplicationContextcontext)在System.Windows.Forms.Application.Run(FormmainForm)在WindowsFormsApplication1.Program.Main()位置D:代码程序WindowsFormsApplication1WindowsFormsApplication1Program.cs:行号18在System.AppDomain._nExecuteAssembly(RuntimeAssemblyassembly,String[]args)在System.AppDomain.ExecuteAssembly(StringassemblyFile,EvidenceassemblySecurity,String[]args)在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()在System.Threading.ThreadHelper.ThreadStart_Context(Objectstate)在System.Threading.ExecutionContext.RunInternal(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate,BooleanpreserveSyncCtx)在System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate,BooleanpreserveSyncCtx)在System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate)在System.Threading.ThreadHelper.ThreadStart()InnerException:
不明白是什么原因,是权限问题吗?
解决方案
解决方案二:
无人问津啊,谁知道怎么回事
解决方案三:
http://dev.mysql.com/downloads/connector/net/去官网下载驱动,用ado.net连接,即便你能解决上述问题,还是建议你这样做。
解决方案四:
引用2楼ajianchina的回复:
http://dev.mysql.com/downloads/connector/net/去官网下载驱动,用ado.net连接,即便你能解决上述问题,还是建议你这样做。
用的pageoffice,他们连接mysql数据库是使用oledb连接方式,所以要解决这个问题。