2016-04-26 14 views
1

Ich versuche, eine Abfrage auszuführen, die Verbindung passiert, aber wenn die Befehlsausführung ausgeführt wird, erhalte ich den obigen Fehler.OLEDB Oracle nicht spezifizierter Fehler (E_FAIL (0x80004005)) auf Abfrage

Hier ist die Abfrage, die ich ausführen möchten:

SELECT COUNT (*) FROM Benutzer WHERE name =: Name und PWD =: pwd;

My Connection String:

Provider = OraOLEDB.Oracle; Benutzer-ID = HR; Passwort = hr;

Spezifikationen:

  • C# WinForms
  • Oracle 11
  • XE Oracle Mit

Schritte Ich habe versucht:

  • Script läuft in sqldeveloper auf dem Live Server
  • Anschluss öffnet
  • Listener ist und
  • Parameter 'name' und 'PWD' bekam durch und laufen

Stacktrace gesendet:

 

     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) 

Wo ich den Fehler:

 

      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 
    } 
    } 

Wobei QueryString = "SELECT COUNT (*) VON Felhasználók WHE RE név =: név UND jelszó =: jelszó; "

Ist es möglich, dass die akzentuierten Buchstaben einen Codierungsfehler verursachen?

+0

Bitte zeigen Sie uns die C#, wo dieser Fehler –

+0

@MarcusH Ich habe die Frage damit bearbeitet – Yerg

+0

Wo deklarieren Sie Ihre Parameterwerte? Es sieht so aus, als ob deine Bindung mit der NévTextBox statt mit dem Wert in der Textbox verknüpft ist. Wenn dies der Fall ist, dann benutze: Probieren Sie command.Parameters.AddWithValue ("név", NévTextBox.Text); –

Antwort

0

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

OleDbCommand Methode Versuchen AddWithValue Objekt übernimmt und das ist, warum Sie einen Text als Parameter ohne Kompilierung-Fehler passieren können.

Verwandte Themen