MySQL 関数

MySQL 関数の用法です。

  • MySQL_Info()

  • MySQL_Init()

  • MySQL_Error()

  • MySQL_Connect()

  • MySQL_Close()

  • MySQL_Query()

  • MySQL_Insert_ID()

  • MySQL_Result()

  • MySQL_Next_Result()

  • MySQL_Columns()

  • MySQL_Result2()

  • MySQL_Escape_String()

  • MySQL_AutoCommit()

  • MySQL_Commit()

  • MySQL_Rollback()

この関数の使用前に mysqllib.ring ライブラリを読み込みます。

load "mysqllib.ring"
# MySQL 関数の使用

MySQL_Info() 関数

MySQL_Info() 関数は MySQL クライアントのバージョンを取得します。

文法:

MySQL_Info() ---> MySQL のバージョン文字列

用例:

see "MySQL Client Version : " + mysql_info()

実行結果:

MySQL Client Version : 6.1.5

MySQL_Init() 関数

MySQL_Init() 関数により MySQL クライアントを使用します。

文法:

MySQL_Init() ---> MySQL ハンドル

MySQL_Error() 関数

MySQL_Error() 関数は MySQL クライアントからエラーメッセージを取得します。

文法:

MySQL_Error(MySQL ハンドル) ---> エラーメッセージの文字列

MySQL_Connect() 関数

MySQL_Connect() 関数は MySQL データベースのサーバーへ接続します。

文法:

MySQL_Connect(MySQL ハンドル, cServer, cUserName, cPassword) ---> lStatus

MySQL_Close() 関数

MySQL_Close() 関数は MySQL データベースの接続を閉じます。

文法:

MySQL_Close(MySQL ハンドル)

MySQL_Query() 関数

MySQL_Query() 関数は SQL のクエリを実行します。

文法:

MySQL_Query(MySQL ハンドル, cSQLQuery)

データベースの作成

この用例は MySQL サーバーへ接続後に新しいデータベースを作成します。

See "MySQL Test - Create Database" + nl
con = mysql_init()

See "Connect" + nl
if mysql_connect(con,"localhost","root","root") = 0
        see "Cann't connect" + nl
        see "Error : " + mysql_error(con) + nl
        mysql_close(con)
        bye
ok

See "Create Database..." + nl
mysql_query(con,"CREATE DATABASE mahdb")

See "Close Connection" + nl
mysql_close(con)

実行結果:

MySQL Test - Create Database
Connect
Create Database...
Close Connection

テーブルの作成とデータの挿入

この用例は新しいテーブルの作成、およびレコードの挿入を行います。

func main
        see "Create Table and Insert Records" + nl
        con = mysql_init()

        see "Connect" + nl
        if mysql_connect(con, "localhost", "root", "root","mahdb") = 0
                system_error(con)
        ok

        see "Drop table" + nl
        if mysql_query(con, "DROP TABLE IF EXISTS Employee")  system_error(con) ok

        see "Create table" + nl
        if mysql_query(con, "CREATE TABLE Employee(Id INT, Name TEXT, Salary INT)")
           system_error(con) ok

        see "Insert data" + nl
        if mysql_query(con, "INSERT INTO Employee VALUES(1,'Mahmoud',15000)")
           system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee VALUES(2,'Samir',16000)")
           system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee VALUES(3,'Fayed',17000)")
           system_error(con) ok

        see "Close connection" + nl
        mysql_close(con)

func system_error con
        see mysql_error(con)  mysql_close(con)  bye

実行結果:

Create Table and Insert Records
Connect
Drop table
Create table
Insert data
Close connection

MySQL_Insert_ID() 関数

MySQL_Insert_ID() 関数は挿入された列の ID を取得します。

文法:

MySQL_Insert_ID() ---> 数値により挿入された列の ID

用例:

con = mysql_init()
see "connect to database" + nl
mysql_connect(con,"localhost","root","root","mahdb")
see "drop table" + nl
mysql_query(con, "DROP TABLE IF EXISTS Customers")
see "create table" + nl
mysql_query(con, "CREATE TABLE Customers(Id INT PRIMARY KEY AUTO_INCREMENT, Name TEXT)")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Mahmoud')")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Samir')")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Fayed')")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Test 2015')")

see "inserted row id : " + mysql_insert_id(con) + nl
see "close database" + nl
mysql_close(con)

実行結果:

connect to database
drop table
create table
insert record
insert record
insert record
insert record
inserted row id : 4
close database

MySQL_Result() 関数

MySQL_Result() 関数はクエリの結果 (カラム名を除くデータ) を取得します。

文法:

MySQL_Result(MySQL ハンドル) ---> クエリの結果を有するリスト

MySQL_Next_Result() 関数

MySQL_Next_Result() 関数は次のクエリの結果を移動します。 この関数は同じクエリで複数の SQL ステートメントがあるときに使用します。

文法:

MySQL_Next_Result(MySQL ハンドル)

クエリの結果を表示するには

この用例はデータベースでクエリを実行後に結果を表示します。

con = mysql_init()
see "Connect to database" + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
see "Execute Query" + nl
mysql_query(con, "SELECT Name FROM Employee WHERE Id=1;"+
                 "SELECT Name FROM Employee WHERE Id=3")
see "Print Result" + nl
see mysql_result(con)
mysql_next_result(con)
see mysql_result(con)
see "close database" + nl
mysql_close(con)

実行結果:

Connect to database
Execute Query
Print Result
Mahmoud
Fayed
close database

MySQL_Columns() 関数

MySQL_Columns() 関数はカラム名のリストを取得します。

文法:

MySQL_Columns(MySQL ハンドル) ---> カラムの情報を有するリスト

用例:

con = mysql_init()
see "Connect to database" + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
see "Execute Query" + nl
mysql_query(con, "SELECT * FROM Employee")
see "Result" + nl
see mysql_columns(con)
see "Close database" + nl
mysql_close(con)

実行結果:

Connect to database
Execute Query
Result
Id
11
3
32768
Name
65535
252
16
Salary
11
3
32768
Close database

MySQL_Result2() 関数

MySQL_Result() でカラム名がないデータの結果を取得するのではなく MySQL_Result2() は、 カラム名を全て取得した後にクエリの結果を一つのリストにします。

文法:

MySQL_Result2(MySQL ハンドル) ---> リスト (カラム名を除いたクエリの結果)

用例:

con = mysql_init()
see "Connect to database" + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
see "Execute Query" + nl
mysql_query(con, "SELECT * FROM Employee")
see "Print Result" + nl
see mysql_result2(con)
see "Close database" + nl
mysql_close(con)

実行結果:

Connect to database
Execute Query
Print Result
Id
Name
Salary
1
Mahmoud
15000
2
Samir
16000
3
Fayed
17000
Close database

MySQL_Escape_String() 関数

MySQL_Escape_String() 関数は処理後に、 バイナリデータまたは特殊文字をデータベースへ格納します。

文法:

MySQL_Escape_String(MySQL ハンドル, cString) ---> 処理後の文字列

データベースのイメージを保存するには

用例:

See "Read file" + nl
cFile = read("tests\mahmoud.jpg")
con = mysql_init()
See "Connect to database..." + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
See "Escape string..." + nl
cFile = mysql_escape_string(con,cFile)
stmt = "INSERT INTO photo(id, data) VALUES(1, '" + cFile + "')"
See "Insert data..." + nl
mysql_query(con,stmt)
See "Close database..." + nl
mysql_close(con)

実行結果:

Read file
Connect to database...
Escape string...
Insert data...
Close database...

データベースからイメージを復元するには

用例:

con = mysql_init()
See "Connect to database..." + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
See "Read data from database..." + nl
mysql_query(con,"SELECT data FROM photo WHERE id=1")
See "Write new file" + nl
result = mysql_result(con)
write("tests\mahmoud2.jpg",result[1][1])
See "Close database..." + nl
mysql_close(con)

実行結果:

Connect to database...
Read data from database...
Write new file
Close database...

MySQL_AutoCommit() 関数

MySQL_AutoCommit() 関数は自動コミット機能の有効、または無効化を指定します。

文法:

MySQL_AutoCommit(MySQL ハンドル, lStatus)  # lStatus には True または False を指定します。

MySQL_Commit() 関数

MySQL_Commit() 関数はデータベースへ更新をコミットします。

文法:

MySQL_Commit(MySQL ハンドル)

MySQL_Rollback() 関数

MySQL_Rollback() 関数はデータベースのロールバックを更新します。

文法:

MySQL_Rollback(MySQL ハンドル)

トランザクションの用例

この用例では、 MySQL_Autocommit(), MySQL_Commit() および、 MySQL_RollBack() の用法です。

用例:

func main

        con = mysql_init()

        see "Connect" + nl
        if mysql_connect(con, "localhost", "root", "root","mahdb") = 0
                system_error(con) ok

        see "Drop table" + nl
        if mysql_query(con, "DROP TABLE IF EXISTS Employee2")
                system_error(con) ok

        see "Create table" + nl
        if mysql_query(con, "CREATE TABLE Employee2(Id INT, Name TEXT, Salary INT)")
                system_error(con) ok

        see "Insert data" + nl
        if mysql_query(con, "INSERT INTO Employee2 VALUES(1,'Mahmoud',15000)")
                system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee2 VALUES(2,'Samir',16000)")
                system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee2 VALUES(3,'Fayed',17000)")
                system_error(con) ok

        mysql_autocommit(con,False)
        mysql_query(con, "INSERT INTO Employee2 VALUES(4,'Ahmed',5000)")
        mysql_query(con, "INSERT INTO Employee2 VALUES(5,'Ibrahim',50000)")
        mysql_query(con, "INSERT INTO Employee2 VALUES(6,'Mohammed',50000)")
        See "Save transaction (y/n) " give nChoice
        if upper(nChoice) = "Y"
                mysql_commit(con)
        else
                mysql_rollback(con)
        ok

        see "Close connection" + nl
        mysql_close(con)

func system_error con

        see mysql_error(con)
        mysql_close(con)
        bye

実行結果:

Connect
Drop table
Create table
Insert data
Save transaction (y/n) y
Close connection