SlideShare a Scribd company logo
Ring Documentation, Release 1.10
See "Write image file" + nl
write("testsgreat.jpg",hex2str( odbc_getdata(pODBC,3) ) )
ok
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)
40.21. Save and Restore images 328
CHAPTER
FORTYONE
MYSQL FUNCTIONS
In this chapter we are going to learn about the MySQL functions provided by the Ring programming language.
• 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()
Before using the next function load the mysqllib.ring library
load "mysqllib.ring"
# Use MySQL functions
41.1 MySQL_Info() Function
We can get the MySQL Client version using the MySQL_Info() function.
Syntax:
MySQL_Info() ---> string contains the MySQL Client version
Example:
see "MySQL Client Version : " + mysql_info()
329
Ring Documentation, Release 1.10
Output:
MySQL Client Version : 6.1.5
41.2 MySQL_Init() Function
We can start using MySQL Client through the MySQL_Init() function.
Syntax:
MySQL_Init() ---> MySQL Handle
41.3 MySQL_Error() Function
We can get the error message from the MySQL Client using the MySQL_Error() function.
Syntax:
MySQL_Error(MySQL Handle) ---> Error message as string
41.4 MySQL_Connect() Function
We can connect to the MySQL database server using the MySQL_Connect() function.
Syntax:
MySQL_Connect(MySQL Handle, cServer, cUserName, cPassword) ---> lStatus
41.5 MySQL_Close() Function
We can close the connection to the MySQL database using the MySQL_Close() function
Syntax:
MySQL_Close(MySQL Handle)
41.6 MySQL_Query() Function
We can execute SQL queries using the MySQL_Query() function
Syntax:
MySQL_Query(MySQL Handle, cSQLQuery)
41.2. MySQL_Init() Function 330
Ring Documentation, Release 1.10
41.7 Create Database
The next example connect to MySQL Server then create new database.
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)
Output:
MySQL Test - Create Database
Connect
Create Database...
Close Connection
41.8 Create Table and Insert Data
The next example create new table and insert records
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)")
41.7. Create Database 331
Ring Documentation, Release 1.10
system_error(con) ok
see "Close connection" + nl
mysql_close(con)
func system_error con
see mysql_error(con) mysql_close(con) bye
Output:
Create Table and Insert Records
Connect
Drop table
Create table
Insert data
Close connection
41.9 MySQL_Insert_ID() Function
We can get the inserted row id using the MySQL_Insert_ID() function
Syntax:
MySQL_Insert_ID() ---> Inserted row id as number
Example:
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)
Output:
connect to database
drop table
create table
insert record
insert record
insert record
insert record
inserted row id : 4
close database
41.9. MySQL_Insert_ID() Function 332
Ring Documentation, Release 1.10
41.10 MySQL_Result() Function
We can get the query result (data without column names) using the MySQL_Result() function.
Syntax:
MySQL_Result(MySQL Handle) ---> List contains the query result
41.11 MySQL_Next_Result() Function
We can move to the next query result using the MySQL_Next_Result() function. We use this function when we have
multiple SQL statements in the same query.
Syntax:
MySQL_Next_Result(MySQL Handle)
41.12 Print Query Result
The next example execute a query on the database then print the result.
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)
Output:
Connect to database
Execute Query
Print Result
Mahmoud
Fayed
close database
41.13 MySQL_Columns() Function
We can get a list of columns names using the MySQL_Columns() function.
Syntax:
41.10. MySQL_Result() Function 333
Ring Documentation, Release 1.10
MySQL_Columns(MySQL Handle) ---> List contains columns information
Example:
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)
Output:
Connect to database
Execute Query
Result
Id
11
3
32768
Name
65535
252
16
Salary
11
3
32768
Close database
41.14 MySQL_Result2() Function
Instead of using MySQL_Result() to get the result data without columns names, we can use the MySQL_Result2() to
get all of the column names then the query result in one list.
Syntax:
MySQL_Result2(MySQL Handle) ---> List (query result starts with columns names)
Example:
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)
Output:
41.14. MySQL_Result2() Function 334
Ring Documentation, Release 1.10
Connect to database
Execute Query
Print Result
Id
Name
Salary
1
Mahmoud
15000
2
Samir
16000
3
Fayed
17000
Close database
41.15 MySQL_Escape_String() Function
We can store binary data and special characters in the database after processing using MySQL_Escape_String() func-
tion
Syntax:
MySQL_Escape_String(MySQL Handle, cString) ---> String after processing
41.16 Save Image inside the database
Example:
See "Read file" + nl
cFile = read("testsmahmoud.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)
Output:
Read file
Connect to database...
Escape string...
Insert data...
Close database...
41.15. MySQL_Escape_String() Function 335
Ring Documentation, Release 1.10
41.17 Restore Image From The Database
Example:
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("testsmahmoud2.jpg",result[1][1])
See "Close database..." + nl
mysql_close(con)
Output:
Connect to database...
Read data from database...
Write new file
Close database...
41.18 MySQL_AutoCommit() Function
We can enable or disable the auto commit feature using the MySQL_AutoCommit() function.
Syntax:
MySQL_AutoCommit(MySQL Handle, lStatus) # lstatus can be True/False
41.19 MySQL_Commit() Function
We can commit updates to the database using the MySQL_Commit() function.
Syntax:
MySQL_Commit(MySQL Handle)
41.20 MySQL_Rollback() Function
We can rollback updates to the database using the MySQL_Rollback() function.
Syntax:
MySQL_Rollback(MySQL Handle)
41.21 Transaction Example
The next example presents the usage of MySQL_Autocommit(), MySQL_Commit() & MySQL_RollBack() functions.
Example:
41.17. Restore Image From The Database 336
Ring Documentation, Release 1.10
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
Output:
Connect
Drop table
Create table
Insert data
Save transaction (y/n) y
Close connection
41.21. Transaction Example 337

More Related Content

PDF
The Ring programming language version 1.7 book - Part 32 of 196
PDF
The Ring programming language version 1.5.1 book - Part 27 of 180
PDF
The Ring programming language version 1.5.2 book - Part 28 of 181
PDF
The Ring programming language version 1.8 book - Part 34 of 202
PDF
The Ring programming language version 1.2 book - Part 18 of 84
PDF
The Ring programming language version 1.6 book - Part 31 of 189
PDF
The Ring programming language version 1.3 book - Part 20 of 88
PDF
The Ring programming language version 1.5.4 book - Part 29 of 185
The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.8 book - Part 34 of 202
The Ring programming language version 1.2 book - Part 18 of 84
The Ring programming language version 1.6 book - Part 31 of 189
The Ring programming language version 1.3 book - Part 20 of 88
The Ring programming language version 1.5.4 book - Part 29 of 185

What's hot (20)

PDF
The Ring programming language version 1.9 book - Part 36 of 210
PDF
The Ring programming language version 1.5.3 book - Part 29 of 184
PDF
The Ring programming language version 1.4.1 book - Part 8 of 31
PPTX
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
PPTX
Sequelize
PDF
The Ring programming language version 1.5.3 book - Part 28 of 184
PPTX
MySql:Introduction
PDF
The Ring programming language version 1.5.1 book - Part 42 of 180
PPTX
MySql:Basics
PPTX
Windows 8 JavaScript (Wonderland)
PDF
Windows 8 Training Fundamental - 1
PDF
Elixir and OTP Apps introduction
PDF
The Ring programming language version 1.7 book - Part 33 of 196
KEY
SQLite 周りのテストをしよう
TXT
Hanya contoh saja dari xampp
PDF
The Ring programming language version 1.8 book - Part 33 of 202
PDF
Data Love Conference - Window Functions for Database Analytics
PPTX
Android Architecture - Khoa Tran
The Ring programming language version 1.9 book - Part 36 of 210
The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.4.1 book - Part 8 of 31
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Sequelize
The Ring programming language version 1.5.3 book - Part 28 of 184
MySql:Introduction
The Ring programming language version 1.5.1 book - Part 42 of 180
MySql:Basics
Windows 8 JavaScript (Wonderland)
Windows 8 Training Fundamental - 1
Elixir and OTP Apps introduction
The Ring programming language version 1.7 book - Part 33 of 196
SQLite 周りのテストをしよう
Hanya contoh saja dari xampp
The Ring programming language version 1.8 book - Part 33 of 202
Data Love Conference - Window Functions for Database Analytics
Android Architecture - Khoa Tran
Ad

Similar to The Ring programming language version 1.10 book - Part 37 of 212 (20)

PDF
PHP and Mysql
PPTX
Php mysq
PPT
Mysql Fun
 
PPT
My sql with querys
PPTX
Mysql
DOC
My sql technical reference manual
PPTX
3-Chapter-Edit.pptx debre tabour university
PPTX
Learn PHP Lacture2
PPT
PHP - Getting good with MySQL part II
PPT
Download It
PDF
PHP with MySQL
PPT
Php and MySQL Web Development
PDF
The Ring programming language version 1.6 book - Part 30 of 189
PPT
Php connectivitywithmysql
PDF
My Sq Ldb Tut
PPT
Php MySql For Beginners
PPT
Lecture6 display data by okello erick
PDF
Mysql In A Nutshell In A Nutshell Oreilly Second Edition Russell Dyer
PPT
Short Intro to PHP and MySQL
PHP and Mysql
Php mysq
Mysql Fun
 
My sql with querys
Mysql
My sql technical reference manual
3-Chapter-Edit.pptx debre tabour university
Learn PHP Lacture2
PHP - Getting good with MySQL part II
Download It
PHP with MySQL
Php and MySQL Web Development
The Ring programming language version 1.6 book - Part 30 of 189
Php connectivitywithmysql
My Sq Ldb Tut
Php MySql For Beginners
Lecture6 display data by okello erick
Mysql In A Nutshell In A Nutshell Oreilly Second Edition Russell Dyer
Short Intro to PHP and MySQL
Ad

More from Mahmoud Samir Fayed (20)

PDF
The Ring programming language version 1.10 book - Part 212 of 212
PDF
The Ring programming language version 1.10 book - Part 211 of 212
PDF
The Ring programming language version 1.10 book - Part 210 of 212
PDF
The Ring programming language version 1.10 book - Part 208 of 212
PDF
The Ring programming language version 1.10 book - Part 207 of 212
PDF
The Ring programming language version 1.10 book - Part 205 of 212
PDF
The Ring programming language version 1.10 book - Part 206 of 212
PDF
The Ring programming language version 1.10 book - Part 204 of 212
PDF
The Ring programming language version 1.10 book - Part 203 of 212
PDF
The Ring programming language version 1.10 book - Part 202 of 212
PDF
The Ring programming language version 1.10 book - Part 201 of 212
PDF
The Ring programming language version 1.10 book - Part 200 of 212
PDF
The Ring programming language version 1.10 book - Part 199 of 212
PDF
The Ring programming language version 1.10 book - Part 198 of 212
PDF
The Ring programming language version 1.10 book - Part 197 of 212
PDF
The Ring programming language version 1.10 book - Part 196 of 212
PDF
The Ring programming language version 1.10 book - Part 195 of 212
PDF
The Ring programming language version 1.10 book - Part 194 of 212
PDF
The Ring programming language version 1.10 book - Part 193 of 212
PDF
The Ring programming language version 1.10 book - Part 192 of 212
The Ring programming language version 1.10 book - Part 212 of 212
The Ring programming language version 1.10 book - Part 211 of 212
The Ring programming language version 1.10 book - Part 210 of 212
The Ring programming language version 1.10 book - Part 208 of 212
The Ring programming language version 1.10 book - Part 207 of 212
The Ring programming language version 1.10 book - Part 205 of 212
The Ring programming language version 1.10 book - Part 206 of 212
The Ring programming language version 1.10 book - Part 204 of 212
The Ring programming language version 1.10 book - Part 203 of 212
The Ring programming language version 1.10 book - Part 202 of 212
The Ring programming language version 1.10 book - Part 201 of 212
The Ring programming language version 1.10 book - Part 200 of 212
The Ring programming language version 1.10 book - Part 199 of 212
The Ring programming language version 1.10 book - Part 198 of 212
The Ring programming language version 1.10 book - Part 197 of 212
The Ring programming language version 1.10 book - Part 196 of 212
The Ring programming language version 1.10 book - Part 195 of 212
The Ring programming language version 1.10 book - Part 194 of 212
The Ring programming language version 1.10 book - Part 193 of 212
The Ring programming language version 1.10 book - Part 192 of 212

Recently uploaded (20)

PDF
Complete Guide to Website Development in Malaysia for SMEs
PPTX
Patient Appointment Booking in Odoo with online payment
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Nekopoi APK 2025 free lastest update
PDF
iTop VPN Crack Latest Version Full Key 2025
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
assetexplorer- product-overview - presentation
PDF
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Website Design Services for Small Businesses.pdf
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
Complete Guide to Website Development in Malaysia for SMEs
Patient Appointment Booking in Odoo with online payment
17 Powerful Integrations Your Next-Gen MLM Software Needs
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Nekopoi APK 2025 free lastest update
iTop VPN Crack Latest Version Full Key 2025
wealthsignaloriginal-com-DS-text-... (1).pdf
Odoo Companies in India – Driving Business Transformation.pdf
assetexplorer- product-overview - presentation
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Website Design Services for Small Businesses.pdf
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development

The Ring programming language version 1.10 book - Part 37 of 212

  • 1. Ring Documentation, Release 1.10 See "Write image file" + nl write("testsgreat.jpg",hex2str( odbc_getdata(pODBC,3) ) ) ok See "Close database..." + nl odbc_disconnect(pODBC) odbc_close(pODBC) 40.21. Save and Restore images 328
  • 2. CHAPTER FORTYONE MYSQL FUNCTIONS In this chapter we are going to learn about the MySQL functions provided by the Ring programming language. • 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() Before using the next function load the mysqllib.ring library load "mysqllib.ring" # Use MySQL functions 41.1 MySQL_Info() Function We can get the MySQL Client version using the MySQL_Info() function. Syntax: MySQL_Info() ---> string contains the MySQL Client version Example: see "MySQL Client Version : " + mysql_info() 329
  • 3. Ring Documentation, Release 1.10 Output: MySQL Client Version : 6.1.5 41.2 MySQL_Init() Function We can start using MySQL Client through the MySQL_Init() function. Syntax: MySQL_Init() ---> MySQL Handle 41.3 MySQL_Error() Function We can get the error message from the MySQL Client using the MySQL_Error() function. Syntax: MySQL_Error(MySQL Handle) ---> Error message as string 41.4 MySQL_Connect() Function We can connect to the MySQL database server using the MySQL_Connect() function. Syntax: MySQL_Connect(MySQL Handle, cServer, cUserName, cPassword) ---> lStatus 41.5 MySQL_Close() Function We can close the connection to the MySQL database using the MySQL_Close() function Syntax: MySQL_Close(MySQL Handle) 41.6 MySQL_Query() Function We can execute SQL queries using the MySQL_Query() function Syntax: MySQL_Query(MySQL Handle, cSQLQuery) 41.2. MySQL_Init() Function 330
  • 4. Ring Documentation, Release 1.10 41.7 Create Database The next example connect to MySQL Server then create new database. 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) Output: MySQL Test - Create Database Connect Create Database... Close Connection 41.8 Create Table and Insert Data The next example create new table and insert records 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)") 41.7. Create Database 331
  • 5. Ring Documentation, Release 1.10 system_error(con) ok see "Close connection" + nl mysql_close(con) func system_error con see mysql_error(con) mysql_close(con) bye Output: Create Table and Insert Records Connect Drop table Create table Insert data Close connection 41.9 MySQL_Insert_ID() Function We can get the inserted row id using the MySQL_Insert_ID() function Syntax: MySQL_Insert_ID() ---> Inserted row id as number Example: 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) Output: connect to database drop table create table insert record insert record insert record insert record inserted row id : 4 close database 41.9. MySQL_Insert_ID() Function 332
  • 6. Ring Documentation, Release 1.10 41.10 MySQL_Result() Function We can get the query result (data without column names) using the MySQL_Result() function. Syntax: MySQL_Result(MySQL Handle) ---> List contains the query result 41.11 MySQL_Next_Result() Function We can move to the next query result using the MySQL_Next_Result() function. We use this function when we have multiple SQL statements in the same query. Syntax: MySQL_Next_Result(MySQL Handle) 41.12 Print Query Result The next example execute a query on the database then print the result. 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) Output: Connect to database Execute Query Print Result Mahmoud Fayed close database 41.13 MySQL_Columns() Function We can get a list of columns names using the MySQL_Columns() function. Syntax: 41.10. MySQL_Result() Function 333
  • 7. Ring Documentation, Release 1.10 MySQL_Columns(MySQL Handle) ---> List contains columns information Example: 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) Output: Connect to database Execute Query Result Id 11 3 32768 Name 65535 252 16 Salary 11 3 32768 Close database 41.14 MySQL_Result2() Function Instead of using MySQL_Result() to get the result data without columns names, we can use the MySQL_Result2() to get all of the column names then the query result in one list. Syntax: MySQL_Result2(MySQL Handle) ---> List (query result starts with columns names) Example: 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) Output: 41.14. MySQL_Result2() Function 334
  • 8. Ring Documentation, Release 1.10 Connect to database Execute Query Print Result Id Name Salary 1 Mahmoud 15000 2 Samir 16000 3 Fayed 17000 Close database 41.15 MySQL_Escape_String() Function We can store binary data and special characters in the database after processing using MySQL_Escape_String() func- tion Syntax: MySQL_Escape_String(MySQL Handle, cString) ---> String after processing 41.16 Save Image inside the database Example: See "Read file" + nl cFile = read("testsmahmoud.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) Output: Read file Connect to database... Escape string... Insert data... Close database... 41.15. MySQL_Escape_String() Function 335
  • 9. Ring Documentation, Release 1.10 41.17 Restore Image From The Database Example: 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("testsmahmoud2.jpg",result[1][1]) See "Close database..." + nl mysql_close(con) Output: Connect to database... Read data from database... Write new file Close database... 41.18 MySQL_AutoCommit() Function We can enable or disable the auto commit feature using the MySQL_AutoCommit() function. Syntax: MySQL_AutoCommit(MySQL Handle, lStatus) # lstatus can be True/False 41.19 MySQL_Commit() Function We can commit updates to the database using the MySQL_Commit() function. Syntax: MySQL_Commit(MySQL Handle) 41.20 MySQL_Rollback() Function We can rollback updates to the database using the MySQL_Rollback() function. Syntax: MySQL_Rollback(MySQL Handle) 41.21 Transaction Example The next example presents the usage of MySQL_Autocommit(), MySQL_Commit() & MySQL_RollBack() functions. Example: 41.17. Restore Image From The Database 336
  • 10. Ring Documentation, Release 1.10 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 Output: Connect Drop table Create table Insert data Save transaction (y/n) y Close connection 41.21. Transaction Example 337