Ok thanks Johannes.  Very good point.  Number's can't really be NULL either.
 However, it just so happens that NaN is interpreted as NULL to the datatype
conversion layer in AIR and it just happens to work out.  Maybe this slight
difference between NaN and NULL doesn't really matter, but it's good to know
that it exists.
My temptation is to write a real object that encapsulates int's as a true
Object data type that can really be NULL, but the draw back here is that it
would be incompatible with AIR's handy databinding (itemClass on
SQLStatement since AIR will convert database integers to Numbers instead of
my abstraction).

I guess more investigation is needed in these matters.

Charlie

On Mon, Nov 24, 2008 at 2:26 PM, Johannes Nel <[EMAIL PROTECTED]>wrote:

>   on debug level it evaluates to NaN, which should insert as NULL.
> but then remember
> var n:Number; // == NaN
> var p:Number = n + 1;//==NaN
>
> var q:int = n+1;//==0
>
>
> On Mon, Nov 24, 2008 at 9:01 PM, Charlie Hubbard <
> [EMAIL PROTECTED]> wrote:
>
>>   So if I can sum up your email very clearly.  I'd say:
>>
>> DO NOT use int, use Number, because that's what Air's database connection
>> layer is going to return you.
>>
>> If you use int data type for fields you'll get zeros.  With Number it's
>> will propagate NULLs correctly.
>>
>> Thanks,
>> Charlie
>>
>> On Mon, Nov 24, 2008 at 12:18 AM, jason_williams_mm <
>> [EMAIL PROTECTED]> wrote:
>>
>>>   --- In [email protected] <flexcoders%40yahoogroups.com>,
>>> "Charlie Hubbard"
>>> <[EMAIL PROTECTED]> wrote:
>>> >
>>> > I've read over all of the docs on Air, but there seems to be a missing
>>> > discussion around NULL values in SQLLite and how those map back to
>>> > datatypes. What I've found is that if I have an int field type I
>>> can't get
>>> > a NULL value to ever get inserted into the SQLLite. It just ends up
>>> > inserting 0 (zero). In Java we'd just convert to using a true
>>> Object like
>>> > Integer class, and that would handle this problem for us. What is the
>>> > equivalent with Actionscript? If you want NULLs and numbers what is an
>>> > object and a number, and will Air convert between the two correctly?
>>> >
>>> > Thanks
>>> > Charlie
>>> >
>>>
>>> It would help to see the code that you are using, however, the
>>> following code gives the same results in both 1.5 and 1.1:
>>>
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml";
>>> layout="absolute" creationComplete="run()">
>>> <mx:Script>
>>> <![CDATA[
>>> import mx.utils.ObjectUtil;
>>>
>>> private function run():void
>>> {
>>> trace(NativeApplication.nativeApplication.runtimeVersion);
>>> var con:SQLConnection = new SQLConnection();
>>> con.open(File.applicationStorageDirectory.resolvePath("nulltesting.db"));
>>> var sql:SQLStatement = new SQLStatement();
>>> sql.sqlConnection = con;
>>> sql.text = "CREATE TABLE test (id integer);";
>>> sql.execute();
>>>
>>> sql.text = "INSERT INTO test VALUES(null);";
>>> sql.execute();
>>>
>>> sql.text = "INSERT INTO test VALUES(1);";
>>> sql.execute();
>>>
>>> sql.text = "INSERT INTO test VALUES(2);";
>>> sql.execute();
>>>
>>> sql.text = "INSERT INTO test VALUES(3);";
>>> sql.execute();
>>>
>>> sql.text = "SELECT * FROM test;";
>>> sql.execute();
>>> trace(ObjectUtil.toString(sql.getResult().data));
>>> }
>>> ]]>
>>> </mx:Script>
>>> </mx:WindowedApplication>
>>>
>>> ------ trace output ------
>>>
>>> (Array)#0
>>> [0] (Object)#1
>>> id = (null)
>>> [1] (Object)#2
>>> id = 1
>>> [2] (Object)#3
>>> id = 2
>>> [3] (Object)#4
>>> id = 3
>>>
>>> Each of the values returned in the object is a Number. Hope that
>>> helps some.
>>>
>>> jw
>>>
>>>
>>
>
>
> --
> j:pn
> \\no comment
>
>  
>

Reply via email to