ibatis-user-cs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ron Grabowski <rongrabow...@yahoo.com>
Subject Re: smalldatetime to string conversion problem in sql server
Date Mon, 13 Mar 2006 23:48:28 GMT
I would expect a database column of type SmallDateTime to be mapped to
a DateTime object...not a string. Why not keep it as a DateTime and let
your application decide its string representation?

--- Zarar Siddiqi <zarars@softbloc.com> wrote:

> 
> Ok, for now I've fixed this problem by defining a custom type handler
> since IBatis is expecting a CLR type of DateTime (code below).  But
> somebody please tell me there is a better way of doing this.  Isn't
> IBatis smart enough to know that the date is being casted to a string
> and behave accordingly?
> 
> 	public class SmallDateTimeTypeHandler  : ITypeHandlerCallback
> 	{
> 		public SmallDateTimeTypeHandler() {}
> 		public object ValueOf(string nullValue) {
> 			return nullValue;
> 		}
> 
> 		public object GetResult(IResultGetter getter) {
> 			if (getter != null) {
> 				DateTime dt = (DateTime) getter.Value;
> 				return dt.ToString();
> 			} else {
> 				return null;
> 			}
> 		}
> 
> 		public void SetParameter(IParameterSetter setter, object parameter)
> {
> 			string val = (string) parameter;
> 			setter.Value = val;
> 		}
> 	}
> 
> 
> 
> >  -------Original Message-------
> >  From: Zarar Siddiqi <zarars@softbloc.com>
> >  Subject: smalldatetime to string conversion problem in sql server
> >  Sent: 13 Mar '06 15:53
> >  
> >  Hi,
> >  
> >  I'm having problem reading a column which stores a date as
> smalldatetime in SQL Server.��I can write to the column fine
using a
> string property but when I try to read it, I get the error pasted
> below.����I've already tried to specify the types explicitly
but that
> didn't work:
> >  
> >  <result column="ShipDate" property="ShipDate" type="string"
> dbType="SmallDateTime"/>
> >  
> >  The reason I know it's this column that's the problem is because
> as soon as I take it out, everything starts to work again.
> >  
> >  Any help is apprecited.��
> >  
> >  Here's the error I get:
> >  
> >  System.InvalidCastException: Specified cast is not valid.
> >  
> >  With the trace:
> >  [InvalidCastException: Specified cast is not valid.]
> >  �� System.Data.SqlClient.SqlDataReader.GetSqlString(Int32 i)
+46
> >  �� System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +32
> >  ��
>
IBatisNet.DataMapper.TypeHandlers.StringTypeHandler.GetValueByName(ResultProperty
> mapping, IDataReader dataReader) +79
> >  ��
>
IBatisNet.DataMapper.Configuration.ResultMapping.ResultProperty.GetDataBaseValue(IDataReader
> dataReader) +32
> >  ��
>
IBatisNet.DataMapper.MappedStatements.MappedStatement.SetObjectProperty(RequestScope
> request, ResultMap resultMap, ResultProperty mapping, Object& target,
> IDataReader reader) +235
> >  ��
>
IBatisNet.DataMapper.MappedStatements.MappedStatement.ApplyResultMap(RequestScope
> request, IDataReader reader, Object resultObject) +241
> >  ��
>
IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForObject(RequestScope
> request, IDalSession session, Object parameterObject, Object
> resultObject) +133
> >  ��
>
IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(IDalSession
> session, Object parameterObject, Object resultObject) +92
> >  ��
>
IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(IDalSession
> session, Object parameterObject) +10
> >  �� IBatisNet.DataMapper.SqlMapper.QueryForObject(String
> statementName, Object parameterObject) +147
> >  
> >  
> >  
> 


Mime
View raw message