【问题标题】:OLEDB Oracle Unspecified Error(E_FAIL(0x80004005)) on queryOLEDB Oracle 未指定错误(E_FAIL(0x80004005)) 查询
【发布时间】:2016-08-20 02:40:42
【问题描述】:

我正在尝试运行查询,连接发生了,但是当命令执行运行时,我得到了上述错误。

这是我要运行的查询:

从用户中选择 COUNT(*),其中 name = :name AND pwd = :pwd;

我的连接字符串:

Provider=OraOLEDB.Oracle;用户 ID = HR;密码 = hr;

规格:

  • C# WinForms
  • 甲骨文 11
  • 使用 Oracle XE

我尝试过的步骤:

  • 脚本在实时服务器上的 sqldeveloper 中运行
  • 连接打开
  • 监听器已启动并运行
  • 参数“name”和“pwd”通过并发送

堆栈跟踪:

System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时) a következő helyen: System.Data.OleDb.OleDbCommand.ExecuteCommandTextForMultpleResults(tagDBPARAMS dbParams, Object& executeResult) a következő helyen: System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) a következő helyen:System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法) 一个 következő helyen:System.Data.OleDb.OleDbCommand.ExecuteScalar() a következő helyen: Tudásbázis.Bejelentkezes.BejelentkezesButton_Click(Object sender, EventArgs e) hely: D:\Repos\Tudásbázis\Tudásbázis\Bejelentkezes.cs, sor: 34 一个 következő helyen:System.Windows.Forms.Control.OnClick(EventArgs e) 一个 következő helyen:System.Windows.Forms.Button.OnClick(EventArgs e) 一个 következő helyen:System.Windows.Forms.Button.OnMouseUp(MouseEventArgs 事件) a következő helyen: System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 一个 következő helyen: System.Windows.Forms.Control.WndProc(Message& m) 一个 következő helyen: System.Windows.Forms.ButtonBase.WndProc(Message& m) 一个 következő helyen: System.Windows.Forms.Button.WndProc(Message& m) 一个 következő helyen: System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 一个 következő helyen: System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 一个 következő helyen:System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID,Int32 原因,Int32 pvLoopData) 一个 következő helyen:System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 原因,ApplicationContext 上下文) 一个 következő helyen:System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 原因,ApplicationContext 上下文) a következő helyen: Tudásbázis.Program.Main() hely: D:\Repos\Tudásbázis\Tudásbázis\Program.cs, sor: 19 一个 következő helyen:System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args) a következő helyen: System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 一个 következő helyen:Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() a következő helyen: System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) a következő helyen: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) a következő helyen: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) a következő helyen: System.Threading.ThreadHelper.ThreadStart()System.Data.OleDb.OleDbException (0x80004005): Meghatározatlan hiba: E_FAIL(0x80004005) 一个 következő helyen:System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 一个 következő helyen: System.Data.OleDb.OleDbCommand.ExecuteCommandTextForMultpleResults(tagDBPARAMS dbParams, Object& executeResult) a következő helyen: System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) a következő helyen:System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法) 一个 következő helyen:System.Data.OleDb.OleDbCommand.ExecuteScalar() a következő helyen: Tudásbázis.Bejelentkezes.BejelentkezesButton_Click(Object sender, EventArgs e) hely: D:\Repos\Tudásbázis\Tudásbázis\Bejelentkezes.cs, sor: 34 一个 következő helyen:System.Windows.Forms.Control.OnClick(EventArgs e) 一个 következő helyen:System.Windows.Forms.Button.OnClick(EventArgs e) 一个 következő helyen:System.Windows.Forms.Button.OnMouseUp(MouseEventArgs 事件) a következő helyen: System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 一个 következő helyen: System.Windows.Forms.Control.WndProc(Message& m) 一个 következő helyen: System.Windows.Forms.ButtonBase.WndProc(Message& m) 一个 következő helyen: System.Windows.Forms.Button.WndProc(Message& m) 一个 következő helyen: System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 一个 következő helyen: System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 一个 következő helyen:System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID,Int32 原因,Int32 pvLoopData) 一个 következő helyen:System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 原因,ApplicationContext 上下文) 一个 következő helyen:System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 原因,ApplicationContext 上下文) a következő helyen: Tudásbázis.Program.Main() hely: D:\Repos\Tudásbázis\Tudásbázis\Program.cs, sor: 19 一个 következő helyen:System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args) a következő helyen: System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 一个 következő helyen:Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() a következő helyen: System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) a következő helyen: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) a következő helyen: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 一个 következő helyen:System.Threading.ThreadHelper.ThreadStart() System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常 附加信息:Meghatározatlan hiba:E_FAIL(0x80004005)

我得到错误的地方:

使用(OleDbConnection 连接 = 新 OleDbConnection(ApplicationStrings.ConnectionString)) { 使用(OleDbCommand command = connection.CreateCommand()) { 连接.打开(); command.CommandText = 查询字符串; command.Parameters.AddWithValue("név",NévTextBox); command.Parameters.AddWithValue("jelszó",_jelszó); int number = (int) command.ExecuteScalar(); //这是抛出错误的行 } }

QueryString = "SELECT COUNT(*) FROM Felhasználók WHERE név = :név AND jelszó = :jelszó;"

重音字母是否可能导致编码错误?

【问题讨论】:

  • 请告诉我们发生此错误的c#
  • @MarcusH 我用它编辑了问题
  • 你在哪里声明你的参数值?看起来你的绑定 név 与 NévTextBox 而不是文本框中的值。如果是这种情况,请使用:。试试 command.Parameters.AddWithValue("név",NévTextBox.Text);
  • 天啊,我不敢相信我忽略了这么小的事情。你能把这个写成答案让我接受吗?
  • 另外,我的表也有问题,我认为这部分相关,但是当您在 oracle 中创建表时,请确保您从连接帐户检查表,而不仅仅是从管理员。跨度>

标签: c# oracle oledb


【解决方案1】:

试试

 command.Parameters.AddWithValue("név",NévTextBox.Text);

OleDbCommand 方法 AddWithValue 接受 Object,这就是为什么您可以将 TextBox 作为参数传递而不会出现任何编译错误。

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2015-03-10
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多