【发布时间】: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 中创建表时,请确保您从连接帐户检查表,而不仅仅是从管理员。跨度>