ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guido García Bernardo <ggb...@tid.es>
Subject Re: Invalid Number
Date Wed, 11 Oct 2006 17:06:15 GMT
You should use the $xxxx$ sintax as Larry describes.

searchVO.setCostComponentIdArrayAsString("\"1234\",\"456\",\"588\"");
flights = this.sqlMap.queryForList("getFlightsbyCriteria", searchVO);

and in sqlMap:
    AND COMPONENT_MOVEMENT_TYPE_ID in ($costComponentIdArrayAsString$)

On the other hand, maybe your database uses the SINGLE QUOTE:
    searchVO.setCostComponentIdArrayAsString("'1234','456','588'");

As Larry said, I'd reccomend you to pass in an array or list instead of 
a String.

sonusgr escribió:
> Thanks for your quick reply. I tried setting the string as
> searchVO.setCostComponentIdArrayAsString("\"1234\",\"456\",\"588\"");
> so that it would get into the sqlmap as  "1234","456","588"
> but no luck. Still getting invalid number.
> I also tried hard coding them inside the sqlmap with quotes but still no
> luck.
> Did I misunderstood something?
>
> Thanks
>
> Larry Meadors-2 wrote:
>   
>> iBATIS uses prepared statements for this, so the SQL that is being
>> executed is like this:
>>
>> ... AND COMPONENT_MOVEMENT_TYPE_ID in ("12,34,56")
>>
>> That won't work. you need to make the values like this:
>>
>> ... AND COMPONENT_MOVEMENT_TYPE_ID in ("12","34","56")
>>
>> That means you either use sql injection (err, substitution I mean) like
>> this:
>>
>> ... AND COMPONENT_MOVEMENT_TYPE_ID in ($someValues$)
>>
>> ...or you need to pass in an array or list and search the archives for
>> "dynamic sql" and "iterate". I'd highly reccomend this approach over
>> the $other$.
>>
>> Larry
>>
>>
>> On 10/10/06, sonusgr <sonusgr@gmail.com> wrote:
>>     
>>> Hi guys,
>>>
>>> I am trying to pass a string of numbers to the my sql statement
>>> but  I am getting SQLException invalid number
>>>
>>> The funny thing is that this occurs only when I am passing more than one
>>> number, meaning if that string I am passing
>>> having more than one number.
>>>
>>> so in DAO we ve got :
>>> searchVO.setCostComponentIdArrayAsString("1234,456,588");
>>>                         flights =
>>> this.sqlMap.queryForList("getFlightsbyCriteria", searchVO);
>>>
>>>
>>> and in sqlMap:
>>> AND COMPONENT_MOVEMENT_TYPE_ID in (#costComponentIdArrayAsString#)
>>>
>>> that throws the SQLException
>>>
>>> ---------
>>>
>>> But if I do searchVO.setCostComponentIdArrayAsString("1234");
>>> works fine...
>>>
>>> What am I doing wrong here?
>>> could it be a backend error?
>>>
>>> thanks guys
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Invalid-Number-tf2417727.html#a6739736
>>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>>>
>>>
>>>       
>>     
>
>   


-- 
Guido García Bernardo

Tfn. +34 983 54 89 08
ITDEUSTO - Valladolid


Mime
View raw message