C# Windows索引搜索-未指定OLEDBEException错误
尝试在我的D-drive(D:\TaalTipsDocumenten)上的文件夹中搜索索引文件时,我遇到异常(OLEDBEException:Not specified Error)。我知道这段代码在过去(2个月前)是有效的,但当试图继续进行该项目时,它似乎不再有效 在执行以下代码的过程中,我在以下行中得到一个错误: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()函数一起使用时
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,IDictionary2个参数)
位于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.WrappedAsyncResult2.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中