Method: QuickBase::Client#doSQLInsert

Defined in:
lib/QuickBaseClient.rb

#doSQLInsert(sqlString) ⇒ Object

Translate a simple SQL INSERT statement to a QuickBase addRecord call.

Note: This method is here primarily for Rails integration. Note: This assumes, like SQL, that your column (i.e. field) names do not contain spaces.



4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
# File 'lib/QuickBaseClient.rb', line 4905

def doSQLInsert(sqlString)

   sql = sqlString.dup
   dbname = ""
   state = nil
   fieldName = ""
   fieldValue = ""
   fieldNames = []
   fieldValues = []
   index = 0
   
   clearFieldValuePairList
   
   sql.gsub!("("," ")
   sql.gsub!(")"," ")

   sql.split(' ').each{ |token|
      case token
         when "INSERT", "INTO" 
            state = "getTable"
            next
         when "VALUES" 
            state = "getFieldValue"
            next
      end
      if state == "getTable"
         dbname = token.strip
         state =   "getFieldName"
      elsif state  == "getFieldName" 
         fieldName = token.dup
         fieldName.gsub!("],","")
         fieldName.gsub!('[','')
         fieldName.gsub!(']','')
         fieldName.gsub!(',','')
         fieldNames << fieldName
      elsif state  == "getFieldValue" 
         test = token.dup
         if test[-1,1] == "'" or test[-2,2] == "',"
            fieldValue << token.dup
            if fieldValue[-2,2] == "',"
               fieldValue.gsub!("',",'')
            end
            fieldValue.gsub!('\'','')
            if fieldValue.length > 0 and fieldNames[index] 
               addFieldValuePair(fieldNames[index],nil,nil,fieldValue)
               fieldName = ""
               fieldValue = ""
            end
            index += 1
         elsif token == ","
            addFieldValuePair(fieldNames[index],nil,nil,"")
            fieldName = ""
            fieldValue = ""
            index += 1
         else
            fieldValue << "#{token.dup} "
         end
      end
   }
   
   if dbname and @dbid.nil?
      dbid = findDBByname( dbname )
   else
      dbid = lookupChdbid( dbname )
   end
   dbid ||= @dbid

   recordid = nil
   if dbid
      recordid,updateid = addRecord(dbid,@fvlist)
   end   
   recordid
   
end