SlideShare a Scribd company logo
Ring Documentation, Release 1.9
40.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
40.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)")
40.7. Create Database 319
Ring Documentation, Release 1.9
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
40.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
40.9. MySQL_Insert_ID() Function 320
Ring Documentation, Release 1.9
40.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
40.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)
40.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
40.13 MySQL_Columns() Function
We can get a list of columns names using the MySQL_Columns() function.
Syntax:
40.10. MySQL_Result() Function 321
Ring Documentation, Release 1.9
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
40.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:
40.14. MySQL_Result2() Function 322
Ring Documentation, Release 1.9
Connect to database
Execute Query
Print Result
Id
Name
Salary
1
Mahmoud
15000
2
Samir
16000
3
Fayed
17000
Close database
40.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
40.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...
40.15. MySQL_Escape_String() Function 323
Ring Documentation, Release 1.9
40.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...
40.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
40.19 MySQL_Commit() Function
We can commit updates to the database using the MySQL_Commit() function.
Syntax:
MySQL_Commit(MySQL Handle)
40.20 MySQL_Rollback() Function
We can rollback updates to the database using the MySQL_Rollback() function.
Syntax:
MySQL_Rollback(MySQL Handle)
40.21 Transaction Example
The next example presents the usage of MySQL_Autocommit(), MySQL_Commit() & MySQL_RollBack() functions.
Example:
40.17. Restore Image From The Database 324
Ring Documentation, Release 1.9
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
40.21. Transaction Example 325
CHAPTER
FORTYONE
SQLITE FUNCTIONS
In this chapter we will learn about using the SQLite database in the Ring programming language.
Before using the next function load the sqlitelib.ring library
load "sqlitelib.ring"
# Use SQLite functions
41.1 sqlite_init() function
Syntax:
sqlite_init() ---> SQLite Object
41.2 sqlite_open() function
Syntax:
sqlite_open(SQLite Object,cFileName)
41.3 sqlite_execute() function
Syntax:
sqlite_execute(SQLite Object,cSQLStatement)
41.4 sqlite_close() function
Syntax:
sqlite_close(SQLite Object)
326
Ring Documentation, Release 1.9
41.5 Example
The next code create a SQLite database, add new records then display the data.
load "sqlitelib.ring"
oSQLite = sqlite_init()
sqlite_open(oSQLite,"mytest.db")
sql = "
CREATE TABLE COMPANY (
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL );
"
sqlite_execute(oSQLite,sql)
sql = "
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Mahmoud' , 29, 'Jeddah', 20000.00 ),
(2, 'Ahmed' , 27, 'Jeddah', 15000.00 ),
(3, 'Mohammed', 31, 'Egypt' , 20000.00 ),
(4, 'Ibrahim' , 24, 'Egypt ', 65000.00 );
"
sqlite_execute(oSQLite,sql)
aResult = sqlite_execute(oSQLite,"select * from COMPANY")
for x in aResult
for t in x
? t[2] + nl
next
next
? copy("*",50)
for x in aResult
? x[:name]
next
sqlite_close(oSQLite)
Output:
1
Mahmoud
29
Jeddah
20000.0
2
Ahmed
27
Jeddah
15000.0
3
Mohammed
31
Egypt
41.5. Example 327
Ring Documentation, Release 1.9
20000.0
4
Ibrahim
24
Egypt
65000.0
**************************************************
Mahmoud
Ahmed
Mohammed
Ibrahim
41.5. Example 328

More Related Content

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

What's hot (20)

PDF
The Ring programming language version 1.4.1 book - Part 8 of 31
PDF
The Ring programming language version 1.7 book - Part 32 of 196
PDF
The Ring programming language version 1.5.3 book - Part 29 of 184
PDF
The Ring programming language version 1.6 book - Part 46 of 189
PDF
The Ring programming language version 1.2 book - Part 32 of 84
PDF
The Ring programming language version 1.5.4 book - Part 44 of 185
PDF
The Ring programming language version 1.3 book - Part 34 of 88
PDF
The Ring programming language version 1.5.2 book - Part 43 of 181
PDF
The Ring programming language version 1.7 book - Part 48 of 196
PPTX
Sequelize
PDF
The Ring programming language version 1.9 book - Part 53 of 210
PDF
The Ring programming language version 1.4.1 book - Part 13 of 31
PPTX
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
PDF
The Ring programming language version 1.5 book - Part 8 of 31
PPTX
MySql:Introduction
PPTX
MySql:Basics
PDF
SQLite in Adobe AIR
PDF
The Ring programming language version 1.5.1 book - Part 42 of 180
PDF
Everything About PowerShell
The Ring programming language version 1.4.1 book - Part 8 of 31
The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.6 book - Part 46 of 189
The Ring programming language version 1.2 book - Part 32 of 84
The Ring programming language version 1.5.4 book - Part 44 of 185
The Ring programming language version 1.3 book - Part 34 of 88
The Ring programming language version 1.5.2 book - Part 43 of 181
The Ring programming language version 1.7 book - Part 48 of 196
Sequelize
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.4.1 book - Part 13 of 31
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
The Ring programming language version 1.5 book - Part 8 of 31
MySql:Introduction
MySql:Basics
SQLite in Adobe AIR
The Ring programming language version 1.5.1 book - Part 42 of 180
Everything About PowerShell
Ad

Similar to The Ring programming language version 1.9 book - Part 36 of 210 (20)

PDF
The Ring programming language version 1.5.3 book - Part 28 of 184
PDF
The Ring programming language version 1.6 book - Part 30 of 189
PDF
python-mysql connectivity (1).pdf
PDF
The Ring programming language version 1.10 book - Part 47 of 212
PDF
The Ring programming language version 1.5.2 book - Part 29 of 181
PDF
The Ring programming language version 1.5.3 book - Part 54 of 184
PDF
The Ring programming language version 1.5.3 book - Part 44 of 184
PDF
The Ring programming language version 1.3 book - Part 19 of 88
PDF
The Ring programming language version 1.4 book - Part 8 of 30
PPTX
Pyhton with Mysql to perform CRUD operations.pptx
PDF
The Ring programming language version 1.8 book - Part 33 of 202
PDF
The Ring programming language version 1.2 book - Part 79 of 84
PDF
The Ring programming language version 1.10 book - Part 54 of 212
PDF
The Ring programming language version 1.9 book - Part 35 of 210
PDF
4.3 MySQL + PHP
PPTX
PYTHON_DATABASE_CONNECTIVITY.pptxPYTHON_DATABASE
PDF
The Ring programming language version 1.2 book - Part 17 of 84
PDF
The Ring programming language version 1.10 book - Part 36 of 212
PDF
The Ring programming language version 1.9 book - Part 46 of 210
PDF
The Ring programming language version 1.5.4 book - Part 28 of 185
The Ring programming language version 1.5.3 book - Part 28 of 184
The Ring programming language version 1.6 book - Part 30 of 189
python-mysql connectivity (1).pdf
The Ring programming language version 1.10 book - Part 47 of 212
The Ring programming language version 1.5.2 book - Part 29 of 181
The Ring programming language version 1.5.3 book - Part 54 of 184
The Ring programming language version 1.5.3 book - Part 44 of 184
The Ring programming language version 1.3 book - Part 19 of 88
The Ring programming language version 1.4 book - Part 8 of 30
Pyhton with Mysql to perform CRUD operations.pptx
The Ring programming language version 1.8 book - Part 33 of 202
The Ring programming language version 1.2 book - Part 79 of 84
The Ring programming language version 1.10 book - Part 54 of 212
The Ring programming language version 1.9 book - Part 35 of 210
4.3 MySQL + PHP
PYTHON_DATABASE_CONNECTIVITY.pptxPYTHON_DATABASE
The Ring programming language version 1.2 book - Part 17 of 84
The Ring programming language version 1.10 book - Part 36 of 212
The Ring programming language version 1.9 book - Part 46 of 210
The Ring programming language version 1.5.4 book - Part 28 of 185
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)

PPTX
L1 - Introduction to python Backend.pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
System and Network Administraation Chapter 3
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Nekopoi APK 2025 free lastest update
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
ai tools demonstartion for schools and inter college
PPTX
Introduction to Artificial Intelligence
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
System and Network Administration Chapter 2
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
history of c programming in notes for students .pptx
L1 - Introduction to python Backend.pptx
PTS Company Brochure 2025 (1).pdf.......
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
System and Network Administraation Chapter 3
Design an Analysis of Algorithms I-SECS-1021-03
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
How to Migrate SBCGlobal Email to Yahoo Easily
Reimagine Home Health with the Power of Agentic AI​
Nekopoi APK 2025 free lastest update
Which alternative to Crystal Reports is best for small or large businesses.pdf
ai tools demonstartion for schools and inter college
Introduction to Artificial Intelligence
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
System and Network Administration Chapter 2
Operating system designcfffgfgggggggvggggggggg
CHAPTER 2 - PM Management and IT Context
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
history of c programming in notes for students .pptx

The Ring programming language version 1.9 book - Part 36 of 210

  • 1. Ring Documentation, Release 1.9 40.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 40.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)") 40.7. Create Database 319
  • 2. Ring Documentation, Release 1.9 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 40.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 40.9. MySQL_Insert_ID() Function 320
  • 3. Ring Documentation, Release 1.9 40.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 40.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) 40.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 40.13 MySQL_Columns() Function We can get a list of columns names using the MySQL_Columns() function. Syntax: 40.10. MySQL_Result() Function 321
  • 4. Ring Documentation, Release 1.9 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 40.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: 40.14. MySQL_Result2() Function 322
  • 5. Ring Documentation, Release 1.9 Connect to database Execute Query Print Result Id Name Salary 1 Mahmoud 15000 2 Samir 16000 3 Fayed 17000 Close database 40.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 40.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... 40.15. MySQL_Escape_String() Function 323
  • 6. Ring Documentation, Release 1.9 40.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... 40.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 40.19 MySQL_Commit() Function We can commit updates to the database using the MySQL_Commit() function. Syntax: MySQL_Commit(MySQL Handle) 40.20 MySQL_Rollback() Function We can rollback updates to the database using the MySQL_Rollback() function. Syntax: MySQL_Rollback(MySQL Handle) 40.21 Transaction Example The next example presents the usage of MySQL_Autocommit(), MySQL_Commit() & MySQL_RollBack() functions. Example: 40.17. Restore Image From The Database 324
  • 7. Ring Documentation, Release 1.9 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 40.21. Transaction Example 325
  • 8. CHAPTER FORTYONE SQLITE FUNCTIONS In this chapter we will learn about using the SQLite database in the Ring programming language. Before using the next function load the sqlitelib.ring library load "sqlitelib.ring" # Use SQLite functions 41.1 sqlite_init() function Syntax: sqlite_init() ---> SQLite Object 41.2 sqlite_open() function Syntax: sqlite_open(SQLite Object,cFileName) 41.3 sqlite_execute() function Syntax: sqlite_execute(SQLite Object,cSQLStatement) 41.4 sqlite_close() function Syntax: sqlite_close(SQLite Object) 326
  • 9. Ring Documentation, Release 1.9 41.5 Example The next code create a SQLite database, add new records then display the data. load "sqlitelib.ring" oSQLite = sqlite_init() sqlite_open(oSQLite,"mytest.db") sql = " CREATE TABLE COMPANY ( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); " sqlite_execute(oSQLite,sql) sql = " INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Mahmoud' , 29, 'Jeddah', 20000.00 ), (2, 'Ahmed' , 27, 'Jeddah', 15000.00 ), (3, 'Mohammed', 31, 'Egypt' , 20000.00 ), (4, 'Ibrahim' , 24, 'Egypt ', 65000.00 ); " sqlite_execute(oSQLite,sql) aResult = sqlite_execute(oSQLite,"select * from COMPANY") for x in aResult for t in x ? t[2] + nl next next ? copy("*",50) for x in aResult ? x[:name] next sqlite_close(oSQLite) Output: 1 Mahmoud 29 Jeddah 20000.0 2 Ahmed 27 Jeddah 15000.0 3 Mohammed 31 Egypt 41.5. Example 327
  • 10. Ring Documentation, Release 1.9 20000.0 4 Ibrahim 24 Egypt 65000.0 ************************************************** Mahmoud Ahmed Mohammed Ibrahim 41.5. Example 328