C# Windows索引搜索-未指定OLEDBEException错误

C# Windows索引搜索-未指定OLEDBEException错误,c#,oledb,oledbdatareader,oledbexception,windows-search,C#,Oledb,Oledbdatareader,Oledbexception,Windows Search,尝试在我的D-drive(D:\TaalTipsDocumenten)上的文件夹中搜索索引文件时,我遇到异常(OLEDBEException:Not specified Error)。我知道这段代码在过去(2个月前)是有效的,但当试图继续进行该项目时,它似乎不再有效 在执行以下代码的过程中,我在以下行中得到一个错误: adapter.Fill(dt); 我可以说Datatable(dt)填充正确,但这一行仍然有一个错误。另外,当尝试将OleDbDataReader与.Next()函数一起使用时

尝试在我的D-drive(D:\TaalTipsDocumenten)上的文件夹中搜索索引文件时,我遇到异常(OLEDBEException:Not specified Error)。我知道这段代码在过去(2个月前)是有效的,但当试图继续进行该项目时,它似乎不再有效

在执行以下代码的过程中,我在以下行中得到一个错误:

adapter.Fill(dt);
我可以说Datatable(dt)填充正确,但这一行仍然有一个错误。另外,当尝试将OleDbDataReader与.Next()函数一起使用时,它会运行结果并最终抛出错误

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);
}
var query11=@“选择System.DateCreated,
System.ItemName,
System.ItemUrl,
系统,大小,,
System.Search.HitCount(来自系统索引)+
@“其中scope='file:D:/TaalTipsDocumenten'并包含('“+word+”)”;
FileOverviewModel returnModel=新的FileOverviewModel();
returnModel.Files=新列表();
returnModel.Search=word;
DataTable dt=新的DataTable();
使用(OleDbConnection connection=new-OleDbConnection(@“Provider=Search.CollatorDSO;Extended Properties=”“Application=Windows”“))
使用(OleDbCommand命令=新OleDbCommand(查询11,连接))
使用(OleDbDataAdapter=新OleDbDataAdapter(命令))
{
适配器填充(dt);
}
错误说明不多(未指定):

System.Data.OleDb.OLEDBEException未由用户代码处理 错误代码=-2147467259 HResult=-2147467259 消息=未指定错误 Source=System.Data 堆栈跟踪: 在System.Data.OleDb.OleDbDataReader.ProcessResults(OleDbHResult hr)中 位于System.Data.OleDb.OleDbDataReader.GetRowHandles()处 位于System.Data.OleDb.OleDbDataReader.ReadRowset()处 在System.Data.OleDb.OleDbDataReader.Read()处 位于System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping映射) 位于System.Data.Common.DataAdapter.FillFromReader(数据集数据集、数据表数据表、字符串srcTable、数据读取器容器数据读取器、Int32 startRecord、Int32 maxRecords、数据列parentChapterColumn、对象parentChapterValue) 位于System.Data.Common.DataAdapter.Fill(DataTable[]dataTables,IDataReader dataReader,Int32 StartRecords,Int32 maxRecords) 位于System.Data.Common.DbDataAdapter.FillInternal(数据集数据集,数据表[]数据表,Int32 StartRecords,Int32 maxRecords,字符串srcTable,IDbCommand命令,CommandBehavior) 位于System.Data.Common.DbDataAdapter.Fill(DataTable[]dataTables,Int32 StartRecords,Int32 maxRecords,IDbCommand命令,CommandBehavior) 位于System.Data.Common.DbDataAdapter.Fill(DataTable) 在D:\Projects\TaalTips\TaalTips\Controllers\HomeController.cs中的TaalTips.Controllers.HomeController.Search(字符串字)中:第40行 在lambda_方法中(闭包、控制器基、对象[]) 位于System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数) 在System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary
2个参数)
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext、ActionDescriptor ActionDescriptor、IDictionary
2个参数) 在System.Web.Mvc.Async.AsyncControllerActionInvoker.b_u39(IAsyncResult asyncResult,ActionInvokeInnerInvokeState) 位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult
2.CallEndDelegate(IAsyncResult asyncResult)
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase上
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
在System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()中
在System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.c__DisplayClass46.b__3f()中
内部异常:

我已经试过一些东西了:

  • 重新启动Windows搜索服务
  • 从文件夹中删除索引并再次添加
  • 重新启动计算机
  • 确保所有连接都已关闭
  • 创建另一个文件夹并尝试该文件夹(相同错误)
  • 使用OleDbDataReader和reader.Next(),但给出相同的错误
有人知道吗


提前谢谢

这不是答案,而是建议

我将尝试消除DataAdapter,看看是否通过DataTable.Load获得相同的异常,按照Test1加载,或者可能按照Test2尝试循环遍历结果

这两种方法都不是解决方案,而是一种查看异常是否由读取特定数据(可能是从过多的行等)引起的方法

注意,在Test2中,我做了一个专栏。我会尝试这样做,或者所有列都允许循环运行,并查看特定行是否引发异常,然后从那里查看是否存在特定列值的问题

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


                    }

                }
            }
        }
    }
}

谢谢你的建议。我已经使用读卡器尝试了测试2,但在reader.Read()行中出现了相同的错误。我在我的帖子中说了这句话,作为我最后尝试的一点:-使用OleDbDataReader和reader.Next(),但在现在尝试第一次测试时会出现相同的错误!考虑Test2,您知道在reader.Next()上抛出错误之前执行了多少次读取吗?您是否尝试删除WHERE子句的contains部分?您是否尝试过删除SELECT中的某些字段,例如,我可能会先删除ItemUrl,然后重试。我也尝试了Test1选项,但仍然遇到相同的问题。我还尝试删除所有内容,只从SystemIndex中选择了1个字段(即使没有WHERE子句),但我一直收到相同的错误。。。所有需要查找的记录都存储在数据表actua中