2017-07-25 3 views
2

Ich erhalte eine Ausnahme (OleDBException: Nicht angegeben Fehler) beim Versuch, in indizierten Dateien in einem Ordner auf meinem D-Laufwerk (D: \ TaalTipsDocumenten) zu suchen. Ich weiß, dass dieser Code in der Vergangenheit funktioniert hat (vor 2 Monaten), aber wenn ich versuche, weiter an diesem Projekt zu arbeiten, scheint es nicht mehr zu funktionieren.Windows Indexsuche - OleDbException nicht angegeben Fehler

Während der Ausführung des folgenden Codes, bekomme ich einen Fehler in der folgenden Zeile:

adapter.Fill(dt); 

Ich kann sagen, dass die Datentabelle (dt) korrekt gefüllt ist, aber ich habe immer noch einen Fehler auf dieser Linie. Wenn ich versuche, einen OleDbDataReader mit der .Next() - Funktion zu verwenden, läuft er über die Ergebnisse und wirft den Fehler schließlich auf.

var query11 = @"SELECT System.DateCreated, 
           System.ItemName, 
           System.ItemUrl, 
           System.Size, 
           System.Search.HitCount FROM SystemIndex " + 
           @"WHERE scope ='file:D:/TaalTipsDocumenten' AND CONTAINS('" + word + "') "; 

FileOverviewModel returnModel = new FileOverviewModel(); 
returnModel.Files = new List<FileModel>(); 
returnModel.Search = word; 

DataTable dt = new DataTable(); 

using (OleDbConnection connection = new OleDbConnection(@"Provider=Search.CollatorDSO;Extended Properties=""Application=Windows""")) 
using (OleDbCommand command = new OleDbCommand(query11, connection)) 
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) 
{ 
    adapter.Fill(dt); 
} 

Der Fehler sagt nicht viel (nicht angegeben):

System.Data.OleDb.OleDbException durch Benutzercode nicht behandelte war Error-Code = -2147467259 HResult = -2147467259 Message = nicht angegeben Fehler Source = System.Data Stacktrace: bei System.Data.OleDb.OleDbDataReader.ProcessResults (OleDbHResult hr) bei System.Data.OleDb.OleDbDataReader.GetRowHandles() bei System.Data.OleD b.OleDbDataReader.ReadRowset() bei System.Data.OleDb.OleDbDataReader.Read() bei System.Data.Common.DataAdapter.FillLoadDataRow (SchemaMapping mapping) bei System.Data.Common.DataAdapter.FillFromReader (Datensatz-Datenmenge, Datentabelle Datentabelle, String srcTable, DataReaderContainer Datareader Int32 startrecord, Int32 maxRecords, Datacolumn parentChapterColumn, Object parentChapterValue) bei System.Data.Common.DataAdapter.Fill (Table [] DataTables- IDataReader Datareader Int32 startrecord, Int32 maxRecords) bei System .Data.Common.DbDataAdapter.FillInternal (DataSet-Dataset, DataTable [] -Databases, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand-Befehl, CommandBehavior-Verhalten) at System.Data.Common.DbDataAdapter.Fill (DataTable [] dataTables, Int32 startRecord, Int32 maxRecords, IDBCommand-Befehl, CommandBehavior-Verhalten) bei System.Data.Common.DbDataAdapter.Fill (DataTable dataTable) bei TaalTips.Controllers.HomeController.Search (String-Wort) in D: \ Projects \ TaalTips \ TaalTips \ Controllers \ HomeController.cs: Zeile 40 bei Lambda_method (Closure, ControllerBase, Objekt []) bei System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase Controller, Object [] Parameter) bei System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 Parameter) bei System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) bei System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.End() 0.123.an System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) bei System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d() bei System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters. <> c__DisplayClass46.b__3f() Innerexception:

ich einige Dinge bereits versucht:

  • Starten Sie Windows Search Service
  • Remove Index aus dem Ordner und fügen Sie es erneut
  • Computer neu starten
  • Stellen Sie sicher, Alle Verbindungen sind geschlossen
  • Erstellen Sie einen anderen Ordner und versuchen Sie es (der gleiche Fehler)
  • Verwenden OleDbDataReader und reader.Next(), aber gibt denselben Fehler

Jemand eine Ahnung hat?

Vielen Dank im Voraus!

Antwort

0

Dies ist keine Antwort, sondern ein Vorschlag.

Ich würde versuchen, den DataAdapter zu beseitigen, zu sehen, ob Sie die gleiche Ausnahme über DataTable.Load wie Test1 oder vielleicht wie in Test2 bekommen, versuchen, durch die Ergebnisse zu durchlaufen.

Weder eine Lösung sein sollen, sondern eine Art und Weise, wenn die Ausnahme vielleicht durch das Lese spezifische Daten verursacht wird, zu sehen, vielleicht von übermäßigen Reihen usw.

Hinweis, in Test2 ich eine Spalte tat. Ich würde versuchen, dass oder alle Spalten erlauben die Schleife zu laufen und sehen, ob eine bestimmte Zeile eine Ausnahme löst, dann von dort sehen, ob ein bestimmter Spaltenwert das Problem ist.

using System; 
using System.Data; 
using System.Data.OleDb; 

namespace Demo 
{ 
    class Class1 
    { 
     void Test1() 
     { 
      var word = "Place a hard code value here"; 
      var query11 = @"SELECT System.DateCreated, 
           System.ItemName, 
           System.ItemUrl, 
           System.Size, 
           System.Search.HitCount FROM SystemIndex " + 
              @"WHERE scope ='file:D:/TaalTipsDocumenten' AND CONTAINS('" + word + "') "; 


      DataTable dt = new DataTable(); 

      using (OleDbConnection connection = new OleDbConnection(@"Provider=Search.CollatorDSO;Extended Properties=""Application=Windows""")) 
      { 
       using (OleDbCommand command = new OleDbCommand(query11, connection)) 
       { 
        connection.Open(); 
        try 
        { 
         dt.Load(command.ExecuteReader()); 
         Console.WriteLine(dt.Rows.Count); 
        } 
        catch (Exception) 
        { 
         // place break-pointhere 


        } 

       } 
      } 
     } 
     void Test2() 
     { 
      var word = "Place a hard code value here"; 
      var query11 = @"SELECT System.DateCreated, 
           System.ItemName, 
           System.ItemUrl, 
           System.Size, 
           System.Search.HitCount FROM SystemIndex " + 
              @"WHERE scope ='file:D:/TaalTipsDocumenten' AND CONTAINS('" + word + "') "; 


      using (OleDbConnection connection = new OleDbConnection(@"Provider=Search.CollatorDSO;Extended Properties=""Application=Windows""")) 
      { 
       using (OleDbCommand command = new OleDbCommand(query11, connection)) 
       { 
        connection.Open(); 
        try 
        { 
         var reader = command.ExecuteReader(); 
         if (reader.HasRows) 
         { 
          while (reader.Read()) 
          { 
           Console.WriteLine($"Date: {reader.GetDateTime(0)}"); 
          } 
         } 
        } 
        catch (Exception) 
        { 
         // place break-pointhere 


        } 

       } 
      } 
     } 
    } 
} 
+0

Danke für die Vorschläge. Ich habe bereits Ihren Test 2 mit der Verwendung eines Lesers versucht und ich bekomme den gleichen Fehler in der Zeile Reader.Read(). Ich sagte dies in meinem Beitrag als letzten Punkt, dass ich versuchte: - Verwenden Sie OleDbDataReader und reader.Next(), aber gibt denselben Fehler Going, um Ihren ersten Test jetzt zu versuchen! – Dennis

+0

Denken Test2, wissen Sie, wie viele Lesevorgänge ausgeführt werden, bevor der Fehler auf reader.Next() ausgelöst wird? Haben Sie versucht, den enthaltenen Teil der WHERE-Klausel zu entfernen? Haben Sie versucht, einige Felder im SELECT z. Ich könnte damit beginnen, beispielsweise ItemUrl zu entfernen und es erneut zu versuchen. –

+0

Ich habe auch Ihre Test1-Option versucht und immer noch das gleiche Problem. Ich habe auch versucht, alles zu entfernen und nur 1 Feld aus SystemIndex (auch ohne WHERE-Klausel), aber ich bekomme immer den gleichen Fehler ... Alle benötigten Datensätze, die gefunden werden müssen, sind tatsächlich in der Datentabelle gespeichert (in meinem Testfall nur 6), aber am Ende wirft er wahrscheinlich diesen Fehler? Keine Ahnung warum. Es ist also nichts falsch mit den Daten, die es scheint. – Dennis

Verwandte Themen