|
|
|
| 19 January 2003 | DBCommand() |
| Author | Jens Meyer (sealeopard@usa.net) |
| Action | Executes a SQL statement and returns an array of records if applicable. |
| Syntax | DBCommand (dsn, SQL) |
| Parameters | |
| Remarks | See also DBConnOpen(), DBConnClose(), DBRecordsetOpen(), DBRecordsetClose(), DBGetRecordset(), DBExecuteSQL() KIXTART BBS http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=12;t=000328 |
| Returns | 2-D array of records or an empty string (SELECT) or 0 if other SQL statement (CREATE, INSERT, UPDATE, DELETE, DROP,...) was executed successfully. |
| Dependencies | KiXtart 4.12+ |
| Examples |
$dsn='DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=test.mdb'
$sql="INSERT INTO Table1 VALUES('eee','fff')"
$recordset = DBCommand($dsn,$sql)
? 'Error = '+@ERROR+' - '+@SERROR
$sql="SELECT Field1, Field2 FROM Table1"
$recordset = DBCommand($dsn,$sql)
? 'Error = '+@ERROR+' - '+@SERROR
for $row=0 to ubound($recordset,1)
for $column=0 to ubound($recordset,2)
? 'Field(row='+$row+', column='+$column+') ='+$recordset[$row,$column]
next
next
|
| Source |
FUNCTION DBCommand ($conndsn, $sql)
DIM $objconn, $adstateopen
DIM $conntimeout, $cmdtimeout
DIM $cmdcommand, $rsrecordset
DIM $records, $finalrecords
DIM $adcmdtext, $adlockreadonly, $adopenstatic
DIM $row, $rows, $column, $columns
$conndsn=Trim($conndsn)
IF NOT $conndsn
EXIT 87
ENDIF
$sql=Trim($sql)
IF NOT $sql
EXIT 87
ENDIF
; default database parameters
$adstateopen=1
$conntimeout=15
$cmdtimeout=30
$adcmdtext = 1
$adopenstatic = 3
$adlockreadonly = 1
; open the database connection
$objconn = CreateObject("ADODB.Connection")
IF @error
EXIT @error
ENDIF
$objconn.connectiontimeout = $conntimeout
IF @error
EXIT @error
ENDIF
$objconn.commandtimeout = $cmdtimeout
IF @error
EXIT @error
ENDIF
$objconn.open($conndsn)
IF @error
EXIT @error
ENDIF
IF NOT $objconn.state=$adstateopen
$objconn=''
$dbcommand=''
EXIT @error
ENDIF
; create the database command object
$cmdcommand = CreateObject('ADODB.Command')
IF @error
EXIT @error
ENDIF
$cmdcommand.activeconnection = $objconn
IF @error
EXIT @error
ENDIF
$cmdcommand.commandtype = $adcmdtext
IF @error
EXIT @error
ENDIF
$cmdcommand.commandtext = $sql
IF @error
$dbcommand=@error
EXIT @error
ENDIF
IF InStr($sql,'SELECT') = 1
; create the recordset object
$rsrecordset = CreateObject('ADODB.Recordset')
IF @error
EXIT @error
ENDIF
$rsrecordset.cursortype = $adopenstatic
IF @error
EXIT @error
ENDIF
$rsrecordset.locktype = $adlockreadonly
IF @error
EXIT @error
ENDIF
$rsrecordset.open($cmdcommand)
IF @error
EXIT @error
ENDIF
IF $rsrecordset.eof AND $rsrecordset.bof
; recordset is empty
$finalrecords=''
ELSE
IF @error
EXIT @error
ENDIF
; retrieve all records at once and transpose into tabular format
$records = $rsrecordset.getrows()
$columns=UBound($records,1)
$rows=UBound($records,2)
REDIM $finalrecords[$rows,$columns]
FOR $row=0 TO $rows
FOR $column=0 TO $columns
$finalrecords[$row,$column]=$records[$column,$row]
NEXT
NEXT
ENDIF
; close recordset
IF $rsrecordset.state=$adstateopen
$rsrecordset.close()
IF @error
EXIT @error
ENDIF
ENDIF
$rsrecordset=''
$cmdcommand=''
$dbcommand=$finalrecords
ELSE
$rsrecordset=$cmdcommand.execute()
$cmdcommand=''
$rsrecordset=''
IF @error
EXIT @error
ENDIF
$dbcommand=0
ENDIF
; close the database connection
IF $objconn.state = $adstateopen
$objconn.close()
IF @error
EXIT @error
ENDIF
ENDIF
$objconn=''
EXIT 0
ENDFUNCTION ; - DBCommand -
|
|
|
|