环境:nhibernate2.1.2.4000, VS2008,mssqlserver2000,hibernate.cfg.xml:方言信息:<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>正常查询、操作正常。出错部分的代码:string strHql = "From RepairService rs inner Join rs.Reservation rv Where rv." + fieldName + " Like '%" + nameLike + "%'";
if (orderBy.Trim() != "")
strHql += " Order By " + orderBy;
return _session.CreateQuery(strHql).List<RepairService>();关联查询时执行的条件能查询出结果时(符合like条件)就出错,不能查询出结果(查询不满足like条件)是就不出错。我把sql语句拿到查询分析器中运行正常,所以很纳闷。错误信息:
该字符串未被识别为有效的布尔值。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.FormatException: 该字符串未被识别为有效的布尔值。源错误:行 26: if (orderBy.Trim() != "")
行 27: strHql += " Order By " + orderBy;
行 28: return _session.CreateQuery(strHql).List<RepairService>();
行 29: }
行 30: }
源文件: E:\MyWork\Rock\Trunck\RockBLL\CustServiceBll\RepairServiceBo.cs 行: 28堆栈跟踪:[FormatException: 该字符串未被识别为有效的布尔值。]
System.Boolean.Parse(String value) +7663730
System.String.System.IConvertible.ToBoolean(IFormatProvider provider) +15
System.Convert.ToBoolean(Object value) +28
NHibernate.Type.BooleanType.Get(IDataReader rs, Int32 index) +36
NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) +92
NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) +31
NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) +19
NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate(IDataReader rs, Object id, Object obj, ILoadable rootLoadable, String[][] suffixedPropertyColumns, Boolean allProperties, ISessionImplementor session) +680
NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, String instanceClass, EntityKey key, String rowIdAlias, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session) +276
NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, String rowIdAlias, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session) +135
NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session) +287
NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) +156
NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +704 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +70
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +102[ADOException: could not execute query[ select repairserv0_.MaintenanceId as Maintena1_186_0_, reservatio1_.MaintenanceId as Maintena1_182_1_,
repairserv0_.ArrivedDate as ArrivedD2_186_0_, repairserv0_.CompletedDate as Complete3_186_0_, repairserv0_.RepairAddr as RepairAddr186_0_,
repairserv0_.RepairType as RepairType186_0_, repairserv0_.RepairMan as RepairMan186_0_, repairserv0_.RepairRe as RepairRe7_186_0_,
repairserv0_.HasCompleted as HasCompl8_186_0_, repairserv0_.InfoUploaded as InfoUplo9_186_0_, reservatio1_.RegionName as RegionName182_1_,
reservatio1_.MachineNo as MachineNo182_1_, reservatio1_.CustName as CustName182_1_, reservatio1_.LinkMan as LinkMan182_1_,
reservatio1_.LinkPhone as LinkPhone182_1_, reservatio1_.ReservMan as ReservMan182_1_, reservatio1_.ReservDate as ReservDate182_1_,
reservatio1_.RepairDate as RepairDate182_1_, reservatio1_.RepairAddr as RepairAddr182_1_, reservatio1_.CustRe as CustRe182_1_,
reservatio1_.FailurePreDeter as Failure12_182_1_ from CustServ_RepairService repairserv0_ inner join CustServ_Reservation
reservatio1_ on repairserv0_.MaintenanceId=reservatio1_.MaintenanceId where reservatio1_.RegionName like '%%' ]
[SQL: select repairserv0_.MaintenanceId as Maintena1_186_0_, reservatio1_.MaintenanceId as Maintena1_182_1_, repairserv0_.ArrivedDate as ArrivedD2_186_0_,
repairserv0_.CompletedDate as Complete3_186_0_, repairserv0_.RepairAddr as RepairAddr186_0_, repairserv0_.RepairType as RepairType186_0_,
repairserv0_.RepairMan as RepairMan186_0_, repairserv0_.RepairRe as RepairRe7_186_0_, repairserv0_.HasCompleted as HasCompl8_186_0_,
repairserv0_.InfoUploaded as InfoUplo9_186_0_, reservatio1_.RegionName as RegionName182_1_, reservatio1_.MachineNo as MachineNo182_1_,
reservatio1_.CustName as CustName182_1_, reservatio1_.LinkMan as LinkMan182_1_, reservatio1_.LinkPhone as LinkPhone182_1_,
reservatio1_.ReservMan as ReservMan182_1_, reservatio1_.ReservDate as ReservDate182_1_, reservatio1_.RepairDate as RepairDate182_1_,
reservatio1_.RepairAddr as RepairAddr182_1_, reservatio1_.CustRe as CustRe182_1_, reservatio1_.FailurePreDeter as Failure12_182_1_
from CustServ_RepairService repairserv0_ inner join CustServ_Reservation reservatio1_ on repairserv0_.MaintenanceId=reservatio1_.MaintenanceId
where reservatio1_.RegionName like '%%']]
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +196
NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) +18
NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes) +79
NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters) +47
NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters) +231
NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results) +353
NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results) +205 NHibernate.Impl.SessionImpl.List(String query, QueryParameters parameters) +182
NHibernate.Impl.QueryImpl.List() +165 Rock.BLL.CustServiceBll.RepairServiceBo.Query(String fieldName, String nameLike, String orderBy, Boolean isAsc) in E:\MyWork\Rock\Trunck\RockBLL\CustServiceBll\RepairServiceBo.cs:28
WebSite.CustService.RepairServiceList.BindData() in E:\MyWork\Rock\Trunck\WebSite\CustService\RepairServiceList.aspx.cs:54
WebSite.CustService.RepairServiceList.btnQuery_Click(Object sender, EventArgs e) in E:\MyWork\Rock\Trunck\WebSite\CustService\RepairServiceList.aspx.cs:31
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
if (orderBy.Trim() != "")
strHql += " Order By " + orderBy;
return _session.CreateQuery(strHql).List<RepairService>();关联查询时执行的条件能查询出结果时(符合like条件)就出错,不能查询出结果(查询不满足like条件)是就不出错。我把sql语句拿到查询分析器中运行正常,所以很纳闷。错误信息:
该字符串未被识别为有效的布尔值。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.FormatException: 该字符串未被识别为有效的布尔值。源错误:行 26: if (orderBy.Trim() != "")
行 27: strHql += " Order By " + orderBy;
行 28: return _session.CreateQuery(strHql).List<RepairService>();
行 29: }
行 30: }
源文件: E:\MyWork\Rock\Trunck\RockBLL\CustServiceBll\RepairServiceBo.cs 行: 28堆栈跟踪:[FormatException: 该字符串未被识别为有效的布尔值。]
System.Boolean.Parse(String value) +7663730
System.String.System.IConvertible.ToBoolean(IFormatProvider provider) +15
System.Convert.ToBoolean(Object value) +28
NHibernate.Type.BooleanType.Get(IDataReader rs, Int32 index) +36
NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) +92
NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) +31
NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) +19
NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate(IDataReader rs, Object id, Object obj, ILoadable rootLoadable, String[][] suffixedPropertyColumns, Boolean allProperties, ISessionImplementor session) +680
NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, String instanceClass, EntityKey key, String rowIdAlias, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session) +276
NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, String rowIdAlias, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session) +135
NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session) +287
NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) +156
NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +704 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +70
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +102[ADOException: could not execute query[ select repairserv0_.MaintenanceId as Maintena1_186_0_, reservatio1_.MaintenanceId as Maintena1_182_1_,
repairserv0_.ArrivedDate as ArrivedD2_186_0_, repairserv0_.CompletedDate as Complete3_186_0_, repairserv0_.RepairAddr as RepairAddr186_0_,
repairserv0_.RepairType as RepairType186_0_, repairserv0_.RepairMan as RepairMan186_0_, repairserv0_.RepairRe as RepairRe7_186_0_,
repairserv0_.HasCompleted as HasCompl8_186_0_, repairserv0_.InfoUploaded as InfoUplo9_186_0_, reservatio1_.RegionName as RegionName182_1_,
reservatio1_.MachineNo as MachineNo182_1_, reservatio1_.CustName as CustName182_1_, reservatio1_.LinkMan as LinkMan182_1_,
reservatio1_.LinkPhone as LinkPhone182_1_, reservatio1_.ReservMan as ReservMan182_1_, reservatio1_.ReservDate as ReservDate182_1_,
reservatio1_.RepairDate as RepairDate182_1_, reservatio1_.RepairAddr as RepairAddr182_1_, reservatio1_.CustRe as CustRe182_1_,
reservatio1_.FailurePreDeter as Failure12_182_1_ from CustServ_RepairService repairserv0_ inner join CustServ_Reservation
reservatio1_ on repairserv0_.MaintenanceId=reservatio1_.MaintenanceId where reservatio1_.RegionName like '%%' ]
[SQL: select repairserv0_.MaintenanceId as Maintena1_186_0_, reservatio1_.MaintenanceId as Maintena1_182_1_, repairserv0_.ArrivedDate as ArrivedD2_186_0_,
repairserv0_.CompletedDate as Complete3_186_0_, repairserv0_.RepairAddr as RepairAddr186_0_, repairserv0_.RepairType as RepairType186_0_,
repairserv0_.RepairMan as RepairMan186_0_, repairserv0_.RepairRe as RepairRe7_186_0_, repairserv0_.HasCompleted as HasCompl8_186_0_,
repairserv0_.InfoUploaded as InfoUplo9_186_0_, reservatio1_.RegionName as RegionName182_1_, reservatio1_.MachineNo as MachineNo182_1_,
reservatio1_.CustName as CustName182_1_, reservatio1_.LinkMan as LinkMan182_1_, reservatio1_.LinkPhone as LinkPhone182_1_,
reservatio1_.ReservMan as ReservMan182_1_, reservatio1_.ReservDate as ReservDate182_1_, reservatio1_.RepairDate as RepairDate182_1_,
reservatio1_.RepairAddr as RepairAddr182_1_, reservatio1_.CustRe as CustRe182_1_, reservatio1_.FailurePreDeter as Failure12_182_1_
from CustServ_RepairService repairserv0_ inner join CustServ_Reservation reservatio1_ on repairserv0_.MaintenanceId=reservatio1_.MaintenanceId
where reservatio1_.RegionName like '%%']]
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +196
NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) +18
NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes) +79
NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters) +47
NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters) +231
NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results) +353
NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results) +205 NHibernate.Impl.SessionImpl.List(String query, QueryParameters parameters) +182
NHibernate.Impl.QueryImpl.List() +165 Rock.BLL.CustServiceBll.RepairServiceBo.Query(String fieldName, String nameLike, String orderBy, Boolean isAsc) in E:\MyWork\Rock\Trunck\RockBLL\CustServiceBll\RepairServiceBo.cs:28
WebSite.CustService.RepairServiceList.BindData() in E:\MyWork\Rock\Trunck\WebSite\CustService\RepairServiceList.aspx.cs:54
WebSite.CustService.RepairServiceList.btnQuery_Click(Object sender, EventArgs e) in E:\MyWork\Rock\Trunck\WebSite\CustService\RepairServiceList.aspx.cs:31
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
解决方案 »
- The database file cannot be found. Check the path to the database
- C# 窗口间数据的实时更新,datagridview例子
- 上传文件验证格式
- 电脑打印普通发票格式如何设计,给个思路?
- 字符串操作
- 同一命名空间下的类究竟应该怎样使用?
- .Net 2.0 的程序运行时中文输入法怪
- c#怎么连db2的数据库?
- vs.net的window application crystal 9 的部署问题,急。。。。。。。。。
- 读取WORD 和EXCEL中的表格
- 求教如何控制datagridview控件的鼠标滚动行数
- 泛型约束必须是int,long或double怎么写?
最后还是自己通过一步步的查看nhibernate的源代码解决了问题:是bool值保存成数据库char数据之后,再读取时的问题。