Parsing a query string

new BookmarkLockedFalling
markl
New Member
*

markl Avatar

Posts: 17

Post by markl on Jan 3, 2008 18:02:20 GMT -5

'-------------------------------------------------------
'-Parsing a character string from an SQlite table query-
'-------------------------------------------------------
' The Sample.db3 database is a demo created from the
' install of SharpPlus SqliteDeveloper and copied into
' the rbp folder for access
'-------------------------------------------------------
sqliteconnect #mySQLdb, "Sample.db3"

'select all fields in table
query$ = "select * from EMPLOYEE order by LAST_NAME asc;"

'select only specified fields
'query$ = "select FIRST_NAME, LAST_NAME from EMPLOYEE order by LAST_NAME asc;"

#mySQLdb execute(query$)

while #mySQLdb hasanswer()
result$ = #mySQLdb nextrow$("|") 'I prefer using a {|} as a delimiter
print ""
print "===S==T==A==R==T==="
strlength = LEN(TRIM$(result$))
print "The strings length is ";
print strlength;
print " and contains ";
print TRIM$(result$)

check$=""
q=1 ' set midstring starting point
for n = 1 to strlength
check$ = MID$(result,ドルn,1)
'----------------------------------------------------
'------ Debugging variables for display -----------
'-------uncomment print statements to use------------
'----------------------------------------------------
' print "======"
' print check$ + " = ";
' print "variable q = ";
' print q
' print "for loop counter n is ";
' print n
'----------------------------------------------------
if check$ = "|" then GOSUB [SPLIT]
x=x+1
next n
print "------>Last parsed field is ";
final$ = mid$(result,ドルq,n)
print final$
wend

#mySQLdb disconnect()
end

'-------------------------------------------------------
'---- subroutine for parsing string delimiter --------
'-------------------------------------------------------
[SPLIT]
final$ = mid$(result,ドルq,n-q)
print "parsed field = ";
print final$
q=n+1
return



------------------------------------------
QUERY OUTPUT BELOW


Output would be created as follows:

===S==T==A==R==T===
The strings length is 62 and contains 34|Janet|Baldwin|2|1991年03月21日|110|Sales|3|USA|61637.81d|00AABB
parsed field = 34
parsed field = Janet
parsed field = Baldwin
parsed field = 2
parsed field = 1991年03月21日
parsed field = 110
parsed field = Sales
parsed field = 3
parsed field = USA
parsed field = 61637.81d
------>Last parsed field is 00AABB

===S==T==A==R==T===
The strings length is 63 and contains 105|Oliver H.|Bender|255|1992年10月08日|000|CEO|1|USA|212850|00AABB
parsed field = 105
parsed field = Oliver H.
parsed field = Bender
parsed field = 255
parsed field = 1992年10月08日
parsed field = 000
parsed field = CEO
parsed field = 1
parsed field = USA
parsed field = 212850
------>Last parsed field is 00AABB

===S==T==A==R==T===
The strings length is 59 and contains 28|Ann|Bennet|5|1991年02月01日|120|Admin|5|England|22935|00AABB
parsed field = 28
parsed field = Ann
parsed field = Bennet
parsed field = 5
parsed field = 1991年02月01日
parsed field = 120
parsed field = Admin
parsed field = 5
parsed field = England
parsed field = 22935
------>Last parsed field is 00AABB

...................... continuing to end of query
Last Edit: Jan 3, 2008 18:12:13 GMT -5 by markl
Jerry Muelver
Administrator
*****

Jerry Muelver Avatar

Posts: 521

markl
New Member
*

markl Avatar

Posts: 17

Post by markl on Jan 3, 2008 18:22:29 GMT -5

'-------------------------------------------------------
'-Parsing a character string from an SQlite table query-
'-------------------------------------------------------
' The Sample.db3 database is a demo created from the
' install of SharpPlus SqliteDeveloper and copied into
' the rbp folder for access
'-------------------------------------------------------
sqliteconnect #mySQLdb, "Sample.db3"

'select all fields in table
query$ = "select * from EMPLOYEE order by LAST_NAME asc;"

'select only specified fields
'query$ = "select FIRST_NAME, LAST_NAME from EMPLOYEE order by LAST_NAME asc;"

#mySQLdb execute(query$)

while #mySQLdb hasanswer()
result$ = #mySQLdb nextrow$("|") 'I prefer using a {|} as a delimiter
print ""
print "===S==T==A==R==T==="
ix = 1
while (word$(result,ドルix,"|") <> "")
print word$(result,ドルix,"|")
ix = ix + 1
wend
wend

#mySQLdb disconnect()
end


Updated with the WORD$ function makes it much cleaner.