More problems with revExecuteSQL

David Burgun dave at looktowindward.com
Thu Nov 1 08:45:34 EDT 2007


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,DateAdded, 
Duration,FileLocation,FileSizeBytes,Genre,ModDate,PlayedCount,PlayedDate 
,SampleRate,TrackName,TrackRating,TrackRatingKind,TrackSkippedCount,Trac 
kSkippedDate,UnplayedFlag)  VALUES (: 
1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:2 
1)


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,:2 
1

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***





More information about the use-livecode mailing list