查询

时间:2016-04-26 10:19:31

标签: c# oracle oledb

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

以下是我要运行的查询:

SELECT COUNT(*)FROM Users WHERE name =:name AND pwd =:pwd;

我的连接字符串:

Provider = OraOLEDB.Oracle; User Id = HR;密码=小时;

规格:

  • C#WinForms
  • Oracle 11
  • 使用Oracle XE

我尝试过的步骤:

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

堆栈跟踪:


        System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
       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 behavior, String method)
       a következő helyen: System.Data.OleDb.OleDbCommand.ExecuteScalar()
       a következő helyen: Tudásbázis.Bejelentkezes.BejelentkezésButton_Click(Object sender, EventArgs e) hely: D:\Repos\Tudásbázis\Tudásbázis\Bejelentkezes.cs, sor: 34
       a következő helyen: System.Windows.Forms.Control.OnClick(EventArgs e)
       a következő helyen: System.Windows.Forms.Button.OnClick(EventArgs e)
       a következő helyen: System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       a következő helyen: System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       a következő helyen: System.Windows.Forms.Control.WndProc(Message& m)
       a következő helyen: System.Windows.Forms.ButtonBase.WndProc(Message& m)
       a következő helyen: System.Windows.Forms.Button.WndProc(Message& m)
       a következő helyen: System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       a következő helyen: System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       a következő helyen: System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       a következő helyen: System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       a következő helyen: System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       a következő helyen: Tudásbázis.Program.Main() hely: D:\Repos\Tudásbázis\Tudásbázis\Program.cs, sor: 19
       a következő helyen: System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       a következő helyen: System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       a 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)
       a következő helyen: System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
       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 behavior, String method)
       a következő helyen: System.Data.OleDb.OleDbCommand.ExecuteScalar()
       a következő helyen: Tudásbázis.Bejelentkezes.BejelentkezésButton_Click(Object sender, EventArgs e) hely: D:\Repos\Tudásbázis\Tudásbázis\Bejelentkezes.cs, sor: 34
       a következő helyen: System.Windows.Forms.Control.OnClick(EventArgs e)
       a következő helyen: System.Windows.Forms.Button.OnClick(EventArgs e)
       a következő helyen: System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       a következő helyen: System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       a következő helyen: System.Windows.Forms.Control.WndProc(Message& m)
       a következő helyen: System.Windows.Forms.ButtonBase.WndProc(Message& m)
       a következő helyen: System.Windows.Forms.Button.WndProc(Message& m)
       a következő helyen: System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       a következő helyen: System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       a következő helyen: System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       a következő helyen: System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       a következő helyen: System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       a következő helyen: Tudásbázis.Program.Main() hely: D:\Repos\Tudásbázis\Tudásbázis\Program.cs, sor: 19
       a következő helyen: System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       a következő helyen: System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       a 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()
    An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll
    Additional information: Meghatározatlan hiba: E_FAIL(0x80004005)

我收到错误的地方:


            using (OleDbConnection connection = new OleDbConnection(ApplicationStrings.ConnectionString))
            {
                using (OleDbCommand command = connection.CreateCommand())
                {
                    connection.Open();

                    command.CommandText = QueryString;

                    command.Parameters.AddWithValue("név",NévTextBox);
                    command.Parameters.AddWithValue("jelszó",_jelszó);

                    int number = (int) command.ExecuteScalar(); //This is the line that throws the error
    }
    }

其中QueryString =“SELECT COUNT(*)FROMFelhasználókWHERnnév=:névANDjelszó=:jelszó;”

强调的字母是否可能导致编码错误?

1 个答案:

答案 0 :(得分:0)

尝试

    public class YourActivity extends Activity implements TaskDelegate {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...

            YourAsyncTask task = new YourAsyncTask(YourActivity.this);
            task.execute();
        }

        @Override
        public void TaskCompletionResult(String response) {
          ...
        }
    }
}

OleDbCommand方法AddWithValue接受Object,这就是为什么你可以将TextBox作为参数传递而没有任何编译错误。