BTW, there's a Wiki page that has some info on the DB-provider combos:

http://opensource2.atlassian.com/confluence/oss/pages/viewpage.action?pageId=532

 

On 12/2/05, Roberto R <[EMAIL PROTECTED]> wrote:
Tests were run for System.Data.OracleClient, ODP.NET 9i, and ODP.NET 10g.  (I would not recommend using ODP.NET 9i with the DataMapper.)

>From my experience, System.Data.OracleClient was the "easiest" to use right away, but ODP.NET 10g offers some advanced features that could be used outside of the DataMapper. 

Roberto



On 12/2/05, Uwe Lesta <[EMAIL PROTECTED] > wrote:

Befor i dig into some solution i like to ask my question with other words:

Which Oracle provider is best tested and is advised by the iBatis comunety ?


Jeremy Gray wrote:

> Can you provide any details regarding the exceptions you are seeing? We

sure

my test query is :

        <select id="SelectFilter" parameterClass="MMServer.DAL.USERSDB_Filter" resultMap="USERSSelectResult" >
                SELECT
                        ID, LOGIN, FIRSTNAME, LASTNAME, ROLE_ID, ORG_ID, REMARK, EXPIRES, MODIFIED, DISABLED, ACTIVE
                FROM USERS
                <dynamic prepend="WHERE">
                        <isNotNull prepend="AND" property="LOGIN">
                                LOGIN like #LOGIN#
                        </isNotNull>
                        <isGreaterThan prepend="AND" property="ACTIVE" compareValue="-1">
                                ACTIVE = #ACTIVE#
                        </isGreaterThan>
                </dynamic>
        </select>

with
        <add key="provider" value="oracle10.1" />
i get

[OracleTypeException: Numerische Stellenangabe liegt außerhalb des gültigen Bereiches (1 - 38)]
    Oracle.DataAccess.Types.OracleDecimal.ConvertToPrecScale(OracleDecimal value1, Int32 precision, Int32 scale) +667
    Oracle.DataAccess.Client.OracleParameter.PreBind_Decimal() +3956
    Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection conn, IntPtr errCtx, Int32 arraySize) +132
    Oracle.DataAccess.Client.OracleCommand.ExecuteReader (Boolean requery, Boolean fillRequest, CommandBehavior behavior)
+2349
    Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) +0
    Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader () +81
    Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader() +0
    IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForList(RequestScope request, IDalSession session,
Object parameterObject, Int32 skipResults, Int32 maxResults, RowDelegate rowDelegate)
    IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object
parameterObject, Int32 skipResults, Int32 maxResults)
    IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList (IDalSession session, Object parameterObject)
    IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject)
    MMServer.DAL.USERSDB.SelectFilter(USERSDB_Filter filter) in
e:\projekteweb\lft\medienmanager\mmserver\app_code\dal\man\usersdb.cs:103
    MMServer.Pages.ifPlayListen.Page_Load(Object sender, EventArgs e) in
e:\projekteweb\lft\medienmanager\mmserver\app_code\pages\playlisten\ifplaylisten.aspx.cs:41


with
        <add key="provider" value=" oracleClient1.0" />

i get

[Exception: Parameter 'param0': No size set for variable length data type: String.]
    System.Data.OracleClient.OracleParameterBinding.PrepareForBind(OracleConnection connection, Int32& offset) +720
    System.Data.OracleClient.OracleCommand.Execute(OciHandle statementHandle, CommandBehavior behavior, Boolean
isReader, Boolean needRowid, OciHandle& rowidDescriptor, ArrayList& refCursorParameterOrdinals) +1919
    System.Data.OracleClient.OracleCommand.Execute(OciHandle statementHandle, CommandBehavior behavior, ArrayList&
refCursorParameterOrdinals) +28
    System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior) +272
    System.Data.OracleClient.OracleCommand.ExecuteReader() +7
    System.Data.OracleClient.OracleCommand.System.Data.IDbCommand.ExecuteReader() +5
    IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForList (RequestScope request, IDalSession session,
Object parameterObject, Int32 skipResults, Int32 maxResults, RowDelegate rowDelegate)
    IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object
parameterObject, Int32 skipResults, Int32 maxResults)
    IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject)
    IBatisNet.DataMapper.SqlMapper.QueryForList (String statementName, Object parameterObject)
    MMServer.DAL.USERSDB.SelectFilter(USERSDB_Filter filter) in
e:\projekteweb\lft\medienmanager\mmserver\app_code\dal\man\usersdb.cs:103
    MMServer.Pages.ifPlayListen.Page_Load (Object sender, EventArgs e) in
e:\projekteweb\lft\medienmanager\mmserver\app_code\pages\playlisten\ifplaylisten.aspx.cs:43




If i change the condition to

                        <isNotEqual prepend="AND" property="LOGIN" compareValue="">
                                LOGIN like #LOGIN#
                        </isNotEqual>

i get

[DataMapperException: Error comparing in conditional fragment.  Uknown 'compare to' values.]
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.ConditionalTagHandler.Compare (SqlTagContext ctx, SqlTag
sqlTag, Object parameterObject)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.IsEqualTagHandler.IsCondition(SqlTagContext ctx, SqlTag tag,
Object parameterObject)
     IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.IsNotEqualTagHandler.IsCondition (SqlTagContext ctx, SqlTag
tag, Object parameterObject)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.Handlers.ConditionalTagHandler.DoStartFragment(SqlTagContext ctx,
SqlTag tag, Object parameterObject)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.ProcessBodyChildren(RequestScope request, SqlTagContext
ctx, Object parameterObject, IEnumerator localChildren, StringBuilder buffer)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.ProcessBodyChildren (RequestScope request, SqlTagContext
ctx, Object parameterObject, IEnumerator localChildren, StringBuilder buffer)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.ProcessBodyChildren(RequestScope request, SqlTagContext
ctx, Object parameterObject, IList localChildren)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.Process(RequestScope request, Object parameterObject)
    IBatisNet.DataMapper.Configuration.Sql.Dynamic.DynamicSql.GetRequestScope (Object parameterObject, IDalSession session)
    IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object
parameterObject, Int32 skipResults, Int32 maxResults)
    IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList (IDalSession session, Object parameterObject)
    IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject)
    MMServer.DAL.USERSDB.SelectFilter(USERSDB_Filter filter) in
e:\projekteweb\lft\medienmanager\mmserver\app_code\dal\man\usersdb.cs:103
    MMServer.Pages.ifPlayListen.Page_Load(Object sender, EventArgs e) in
e:\projekteweb\lft\medienmanager\mmserver\app_code\pages\playlisten\ifplaylisten.aspx.cs:43




> too encountered some early on, specifically with respect to default type
> conversion of certain sizes of oracle number fields, and might be able
> to point you in the right direction.
>
> Jeremy Gray


<snip>

> I like to ask:
>
> Which seems to be the best Oracle provider to work with the ibatis
> DataMapper 1.2 ( latest SVN version ) ?
>
> Background: I get different TypeExceptions on different columntypes on
> different providers.

--

Kind regards

Uwe
Lesta at SBS-Softwaresysteme.de




Reply via email to