More problems with revExecuteSQL

David Burgun dave at looktowindward.com
Thu Nov 1 09:03:27 EDT 2007


Hi,

> I believe that even with variable substitution, you have to put '  
> around any non-numeric parameter.

Do you mean the data in the array? The reason I moved from just  
sending the data in the SQL Statement directly was to get around the  
problem that there may be quotes in the data to be inserted.

> Your SQL statement doesn't have that.  The 13T01 is the time.  It  
> appears that the expression for the date is getting evaluated as a  
> math function.

But why? And how do I stop it! There may well be single quotes in the  
data. The data can be any UTF8 character.

> I think your template SQL statement should be something like:
>
> ... VALUES (':1',':2',...

Not according to the documentation:

revExecuteSQL myID,"insert into emp() values(:1,:2,:1)",\
      "valueX","valueY"

The content of the variable valueX is substituted for the ":1" in the  
SQLQuery (in both places where ":1" appears), and the content of  
valueY is substituted for ":2".

If you specify an arrayName rather than a list of ordinary variables,  
the revExecuteSQL command substitutes the corresponding element of  
the array for each of the placeholders in the query:

   revExecuteSQL myID,"insert into emp() values(:1,:2,:1)","myArray"

The content of the element myArray[1] is substituted for the ":1" in  
the SQLQuery (in both places where ":1" appears), and the content of  
myArray[2] is substituted for ":2".


Anyone have any idea how to do this simple thing?

All the Best
Dave


On 1 Nov 2007, at 12:53, Len Morgan wrote:

> I believe that even with variable substitution, you have to put '  
> around any non-numeric parameter.  Your SQL statement doesn't have  
> that.  The 13T01 is the time.  It appears that the expression for  
> the date is getting evaluated as a math function.
>
> I think your template SQL statement should be something like:
>
> ... VALUES (':1',':2',...
>
> Hope that helps
>
> len morgan
>
>
> David Burgun wrote:
>> Hi,
>>
>> After finding out that the data I was sending with revExecuteSQL  
>> needed to be escaped if it contains double-quotes or colon etc. I  
>> decided it would be better to put the data into an array and use  
>> the parameter substitution feature. When I run it now, I get  the  
>> following error: unrecognized token: "13T01"
>>
>> And I can't figure out could be wrong! Please see of the function  
>> where this occurs followed by the contents of the variables.
>>
>> Anyone got any ideas or what could be wrong? Not sure what to do  
>> now! I need to be able to write arbitrary UTF8 string to a SQLite  
>> database. Doesn't seem a lot to ask! lol
>>
>> All the Best
>> Dave
>>
>> --------------------------------------------------------------
>> -- 
>> --  UtilDBInsertRecord
>> -- 
>> ---------------------------------------------------------------
>> function UtilDBInsertRecord  
>> theDatabaseID,theTableName,theRecordKeyArray
>>   local mySQLCode
>>   local myKeyList
>>   local myKeyName
>>   local myKeyText
>>   local myResult
>>   local myTempKeyList
>>   local myValueList
>>   local myParameterList
>>   local myParameterArray
>>   local myParameterNumber
>>
>>   put the keys of theRecordKeyArray into myKeyList
>>   if myKeyList <> empty then
>>     sort lines of myKeyList
>>     put replaceText(myKeyList,cr,",") into myTempKeyList
>>     --delete char -1 of myTempKeyList
>>
>>     put empty into myParameterArray
>>     put empty into myParameterList
>>     put empty into myValueList
>>     put 1 into myParameterNumber
>>     repeat for each line myKeyName in myKeyList
>>       put ":" &  myParameterNumber & "," after myParameterList
>>       put theRecordKeyArray[myKeyName] into myParameterArray 
>> [myParameterNumber]
>>       add 1 to myParameterNumber
>>     end repeat
>>
>>     delete char -1 of myParameterList
>>     put "INSERT INTO " & theTableName & " (" & myTempKeyList & ")  
>> " & \
>>         " VALUES (" & myParameterList & ") " into mySQLCode
>>
>>     revExecuteSQL theDatabaseID,mySQLCode,"myParameterArray"
>>     put the result into myResult
>>
>>     if myResult <> empty then
>>       if myResult is not an integer then
>>         answer error "Error in UtilDBInsertRecord, revExecuteSQL:"  
>> && myResult
>>         breakpoint
>>       end if
>>     end if
>>   end if
>>
>>   return myResult
>> end UtilDBInsertRecord
>>
>> --------------------------------------------------------------------- 
>> -----------------------------------
>> Variable dump when the error occurs:
>>
>>
>> mySQLCode:
>>
>> INSERT INTO MusicBase  
>> (AlbumName,AlbumRating,AlbumRatingKind,ArtistName,BitRate,BPM,DateAdd 
>> ed,Duration,FileLocation,FileSizeBytes,Genre,ModDate,PlayedCount,Play 
>> edDate,SampleRate,TrackName,TrackRating,TrackRatingKind,TrackSkippedC 
>> ount,TrackSkippedDate,UnplayedFlag)  VALUES (: 
>> 1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20 
>> ,:21)
>>
>>
>> myResult            unrecognized token: "13T01"
>>
>> myParameterList        : 
>> 1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20 
>> ,:21
>>
>> myParameterArray:
>>
>> [1]    The Best Of Bob Dylan I
>> [2]    0
>> [3]    computed
>> [4]    Bob Dylan
>> [5]    192
>> [6]    0
>> [7]    2007-10-29T10:25:04Z
>> [8]    168463
>> [9]    file://localhost/Users/Dave/Music/iTunes/iTunes Music/Bob  
>> Dylan/The Best Of Bob Dylan I/01 Blowin' In The Wind.mp3
>> [10]    4045324
>> [11]    Rock
>> [12]    2003-07-13T01:58:33Z
>> [13]    0
>> [14]    missing value
>> [15]    44100
>> [16]    Blowin' In The Wind
>> [17]    0
>> [18] computed
>> [19]    0
>> [20]    missing value
>> [21]    ***NULL***
>>
>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your  
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution




More information about the use-livecode mailing list