Rapid-Q Documentation by William Yu (c)1999-2000 Appendix A: QMYSQL


QMYSQL Component

QMySQL is used to access your local or remote MySQL server. More information on MySQL can be obtained at http://www.mysql.com/

QMySQL Properties
Field Type R/W Default Support





Connected INTEGER R WXG
Connected specifies whether you are currently connected to a MySQL server. Use the Connect method to establish a connection.
DB ARRAY of STRING R WXG
DB returns a database list that are currently available on the MySQL server.
DBCount INTEGER R WXG
DBCount returns the number of databases that are currently available on the MySQL server.
ColCount INTEGER R WXG
ColCount returns the number of columns in the table. ColCount is used after an SQL query to determine the number of columns in the resulting table.
FieldCount INTEGER R WXG
FieldCount returns the number of columns in the table. FieldCount is used after an SQL query to determine the number of columns in the resulting table.
Field.Decimals INTEGER R WXG
Field.Decimals returns the number of decimals in the field.
Field.Flags INTEGER R WXG
Field.Flags returns the flag settings. Refer to MYSQL.INC for supported values.
Field.Length INTEGER R WXG
Field.Length returns the width of the column.
Field.MaxLength INTEGER R WXG
Field.MaxLength returns the maximum width of the selected set. A result set can have multiple fields (or columns), Field.MaxLength returns the largest of these.
Field.Name STRING R WXG
Field.Name returns the name of the column.
Field.Table STRING R WXG
Field.Type INTEGER R WXG
Field.Type returns the type of field. Refer to MYSQL.INC for supported values.
Length ARRAY of INTEGER R WXG
Length returns the length of each field. Make sure a call to FetchLengths is made.
Row ARRAY of STRING R WXG
Row returns the value stored in the particular Row for the current result set. The value is also dependent on the Field (or column). For example, Row(3) returns the value stored in Row 3 and whatever Column, ie. 2. Which is different from Row(3) of Column 3 for example.
RowCount INTEGER R WXG
Table ARRAY of STRING R WXG
Table returns a list of tables for the current database.
TableCount INTEGER R WXG


QMySQL Methods
Method Type Description Params Support





Close SUB Disconnect from MySQL 0 WXG
Connect FUNCTION (Host$, User$, Passwd$) AS INTEGER Connect to MySQL 3 WXG
CreateDB FUNCTION (DB$) AS INTEGER Creates a new database 1 WXG
DropDB FUNCTION (DB$) AS INTEGER Drop database 1 WXG
EscapeString FUNCTION (S$, Length%) AS STRING Parses binary string S$ and returns a string that can be used in Blob fields 2 WXG
FetchField FUNCTION AS INTEGER Fetch next field 0 WXG
FetchLengths FUNCTION AS INTEGER Fetch lengths for current row 0 WXG
FetchRow FUNCTION AS INTEGER Fetch next row 0 WXG
FieldSeek FUNCTION (Position%) Jump to Field Position% 1 WXG
Query FUNCTION (Query$) AS INTEGER Query database 1 WXG
RealConnect SUB (Host$, User$, Passwd$, DB$, Port%, UnixSock$, Flags%) Connect to MySQL 7 WXG
Refresh FUNCTION (RefreshFlags%) AS INTEGER Refresh database 1 WXG
RowBlob FUNCTION (Row%, Bytes&) AS STRING Returns the binary blob as a string 2 WXG
RowSeek FUNCTION (Row%) Jump to a certain row 1 WXG
SelectDB FUNCTION (DB$) AS INTEGER Select database to use 1 WXG

QMySQL Events
Event Type Occurs when... Params






QMySQL Examples
' This simply checks that you have a working MySQL server and lets you
' view some database fields.

$TYPECHECK ON
$INCLUDE "RAPIDQ.INC"

DECLARE SUB Button1Click (Sender AS QBUTTON)
DECLARE SUB DBListBoxClick (Sender AS QLISTBOX)
DECLARE SUB TableListBoxClick (Sender AS QLISTBOX)
DECLARE SUB SQLFormResize (Sender AS QFORM)

DIM Font AS QFONT
    Font.Name = "Courier"
DIM MySQL AS QMYSQL

    CREATE SQLForm AS QFORM
        Caption = "Connected"
        Width = 330
        Height = 300
        Center
        CREATE DBLabel AS QLABEL
            Caption = "Select a database:"
        END CREATE
        CREATE DBListBox AS QLISTBOX
            Top = 20
            Width = 150
            Height = 100
            OnClick = DBListBoxClick
        END CREATE
        CREATE TableListBox AS QLISTBOX
            Top = 20
            Left = 165
            Width = 150
            Height = 100
            OnClick = TableListBoxClick
        END CREATE
        CREATE FieldEdit AS QRICHEDIT
            Top = 130
            Width = SQLForm.ClientWidth
            Height = SQLForm.ClientHeight-130
            ReadOnly = TRUE
            WordWrap = FALSE
            PlainText = TRUE
            Font = Font
            ScrollBars = ssBoth
        END CREATE
        CREATE Grid AS QSTRINGGRID
            Top = 130
            Width = SQLForm.ClientWidth
            Height = SQLForm.ClientHeight-130
            AddOptions(goEditing)
        END CREATE
        OnResize = SQLFormResize
    END CREATE

CREATE Form AS QFORM
    Caption = "SQL Demo"
    Width = 230
    Height = 174
    Center
    CREATE Label1 AS QLABEL
        Caption = "Host:"
        Left = 44
        Top = 23
    END CREATE
    CREATE Label2 AS QLABEL
        Caption = "User name:"
        Left = 16
        Top = 50
        Width = 57
    END CREATE
    CREATE Label3 AS QLABEL
        Caption = "Password:"
        Left = 21
        Top = 79
        Width = 54
    END CREATE
    CREATE Edit1 AS QEDIT
        Text = ""
        Left = 83
        Top = 18
    END CREATE
    CREATE Edit2 AS QEDIT
        Text = ""
        Left = 83
        Top = 46
    END CREATE
    CREATE Edit3 AS QEDIT
        Text = ""
        Left = 83
        Top = 74
    END CREATE
    CREATE Button1 AS QBUTTON
        Caption = "&Ok"
        Left = 32
        Top = 112
        Kind = 1
        Default = 1
        NumBMPs = 2
        OnClick = Button1Click
    END CREATE
    CREATE Button2 AS QBUTTON
        Caption = "E&xit"
        Left = 118
        Top = 112
        Kind = 6
        NumBMPs = 2
    END CREATE
    ShowModal
END CREATE


SUB Button1Click
    DIM I AS INTEGER

    IF MySQL.Connect(Edit1.Text, Edit2.Text, Edit3.Text) = 0 THEN
       ShowMessage("Failed to connect to MySQL Server")
       EXIT SUB
    END IF

    FOR I = 0 TO MySQL.DBCount-1
        DBListBox.AddItems(MySQL.DB(I))
    NEXT

    SQLForm.ShowModal

    SUB DBListBoxClick (Sender AS QLISTBOX)

        IF Sender.ItemIndex < 0 THEN EXIT SUB
        IF MySQL.SelectDB(Sender.Item(Sender.ItemIndex)) = 0 THEN
            ShowMessage("Could not open "+Sender.Item(Sender.ItemIndex))
            EXIT SUB
        END IF

        TableListBox.Clear
        FOR I = 0 TO MySQL.TableCount-1
            TableListBox.AddItems(MySQL.Table(I))
        NEXT
    END SUB

    SUB TableListBoxClick (Sender AS QLISTBOX)
        DIM Str AS STRING, J AS INTEGER

        IF Sender.ItemIndex < 0 THEN EXIT SUB
        IF MySQL.Query("show columns from "+Sender.Item(Sender.ItemIndex)) = 0 THEN
            ShowMessage("Could not query "+Sender.Item(Sender.ItemIndex))
            EXIT SUB
        END IF

        FieldEdit.Clear
        Grid.ColCount = MySQL.FieldCount
        I = 0
        WHILE MySQL.FetchField
            Grid.Cell(I,0) = MySQL.Field.Name
            I++
        WEND

        Grid.RowCount = MySQL.RowCount+1
        IF MySQL.RowCount THEN
            J = 1
            WHILE MySQL.FetchRow
                MySQL.FieldSeek(0)
                FOR I=0 to MySQL.NumFields-1
                    Grid.Cell(I,J) = MySQL.Row(I)
                NEXT
                J++
            WEND
        END IF
    END SUB
END SUB

SUB SQLFormResize (Sender AS QFORM)
    Grid.Height = Sender.ClientHeight - Grid.Top
    Grid.Width = Sender.ClientWidth-1
    TableListBox.Width = Sender.ClientWidth-1 - TableListBox.Left
END SUB

IF MySQL.Connected THEN MySQL.Close
END

Prev ComponentContentsNext Component