Stdlib Classes

In this chapter we are going to learn about the classes in the stdlib.ring

  • StdBase Class

  • String Class

  • List Class

  • Stack Class

  • Queue Class

  • HashTable Class

  • Tree Class

  • Math Class

  • DateTime Class

  • File Class

  • System Class

  • Debug Class

  • DataType Class

  • Conversion Class

  • ODBC Class

  • MySQL Class

  • SQLite Class

  • PostgreSQL Class

  • Security Class

  • Internet Class

StdBase Class

Attributes:

  • vValue : Object Value

Methods:

Method

Description/Output

Init(x)

Set vValue Attribute to x value

Print()

Print vValue

PrintLn()

Print vValue then New Line

Size()

return number represent the size of vValue

Value()

return vValue

Set(x)

Call Init(x)

String Class

Parent Class : StdBase Class

Methods:

Method

Description/Output

Init(String|Number|List)

Lower()

New String - Lower case characters

Upper()

New String - Upper case characters

Left(x)

New String - contains x characters from the left

Right(x)

New String - contains x characters from the right

Lines()

Number - Lines count

Trim()

New String - Remove Spaces

Copy(x)

New String - repeat string x times

strcmp(cString)

Compare string with cString

tolist()

List (String Lines to String Items)

tofile(cFileName)

Write string to file

mid(nPos1,nPos2)

New String - from nPos1 to nPos2

getfrom(nPos1)

New String - from nPos1 to the end of the string

replace(cStr1,cStr2,lCase)

New String - Replace cStr1 with cStr2 , lCase (True=Match Case)

split()

List - Each Word as list item

startswith(substring)

Return true if the start starts with a substring

endswith(substring)

Return true if the start ends with a substring

Example:

Load "stdlib.ring"

See "Testing the String Class" + nl
oString = new string("Hello, World!")
oString.println()
oString.upper().println()
oString.lower().println()
oString.left(5).println()
oString.right(6).println()
oString = new string("Hi" + nl + "Hello" )
See oString.lines() + nl
oString = new string("    Welcome    ")
oString.println()
oString.trim().println()
oString = new string("Hello! ")
oString.copy(3).println()
see oString.strcmp("Hello! ") + nl
see oString.strcmp("Hello ") + nl
see oString.strcmp("Hello!! ") + nl
oString = new string(["one","two","three"])
oString.print()
see oString.lines() + nl
oString = new String(1234)
oString.println()
oString = new String("one"+nl+"two"+nl+"three")
aList = oString.tolist()
see "List Items" + nl See aList
oString = new String( "Welcome to the Ring programming language")
See "the - position : " + oString.pos("the") + nl
oString = oString.getfrom(oString.pos("Ring"))
oString.println()
oString.mid(1,4).println()
oString = oString.replace("Ring","***Ring***",true)
oString.println()
oString = oString.replace("ring","***Ring***",false)
oString.println()
oString1 = new string("First")
oString2 = new string("Second")
oString = oString1 + oString2
oString.println()
oString = oString1 * 3
oString.println()
for t in ostring see t next
oString.tofile("test.txt")
oString = new string("one two three")
see nl
see ostring.split()
oString {
        set("Hello") println()
        set("How are you?") println()
}

Output:

Testing the String Class
Hello, World!
HELLO, WORLD!
hello, world!
Hello
World!
2
        Welcome
Welcome
Hello! Hello! Hello!
0
1
-1
one
two
three
4
1234
List Items
one
two
three
the - position : 12
Ring programming language
Ring
***Ring*** programming language
******Ring****** programming language
FirstSecond
FirstFirstFirst
FirstFirstFirst
one
two
three
Hello
How are you?

List Class

Parent Class : StdBase Class

Methods:

Method

Description/Output

Init(String|List)

Add(Value)

Add item to the list

Delete(nIndex)

Delete item from the list

Item(nIndex)

Get item from the list

First()

Get the first item in the list

Last()

Get the last item in the list

Set(nIndex,Value)

Set item value

FindInColumn(nCol,Value)

Find item in a column

Sort()

Sort items - return new list

Reverse()

Reverse items - return new list

Insert(nIndex,Value)

Inset Item after nIndex

example:

Load "stdlib.ring"

oList = new list ( [1,2,3] )
oList.Add(4)
oList.print()
see oList.item(1) + nl
oList.delete(4)
oList.print()
see oList.first() + nl
see oList.last() + nl
oList { set(1,"one") set(2,"two") set(3,"three") print() }
see oList.find("two") + nl
oList.sort().print()
oList.reverse().print()
oList.insert(2,"nice")
oList.print()
oList = new list ( [ [1,"one"],[2,"two"],[3,"three"] ] )
see copy("*",10) + nl
oList.print()
see "Search two : " + oList.findincolumn(2,"two") + nl
see "Search 1 : " + oList.findincolumn(1,1) + nl
oList = new list ( [ "Egypt" , "USA" , "KSA" ] )
for x in oList
        see x + nl
next
oList =  new list ( [1,2,3,4] )
oList + [5,6,7]
oList.print()
oList = new list ( ["one","two"] )
oList2 = new list ( ["three","four"] )
oList + oList2
oList.print()

output:

1
2
3
4
1
1
2
3
1
3
one
two
three
2
one
three
two
three
two
one
one
two
nice
three
**********
1
one
2
two
3
three
Search two : 2
Search 1 : 1
Egypt
USA
KSA
1
2
3
4
5
6
7
one
two
three
four

Stack Class

Parent Class : List Class

Methods:

Method

Description/Output

Init(String|Number|List)

Push(Value)

Push item to the stack

Pop()

Pop item from the stack

Print()

Print the stack items

example:

Load "stdlib.ring"

oStack = new Stack
oStack.push(1)
oStack.push(2)
oStack.push(3)
see oStack.pop() + nl
see oStack.pop() + nl
see oStack.pop() + nl
oStack.push(4)
see oStack.pop() + nl
oStack { push("one") push("two") push("three") }
oStack.print()

output:

3
2
1
4
three
two
one

Queue Class

Parent Class : List Class

Methods:

Method

Description/Output

Init(String|Number|List)

Remove()

Remove item from the Queue.

example:

Load "stdlib.ring"

oQueue = new Queue
oQueue.add(1)
oQueue.add(2)
oQueue.add(3)
see oQueue.remove() + nl
see oQueue.remove() + nl
see oQueue.remove() + nl
oQueue.add(4)
see oQueue.remove() + nl
oQueue { add("one") add("two") add("three") }
oQueue.print()

output:

1
2
3
4
one
two
three

HashTable Class

Parent Class : List Class

Methods:

Method

Description/Output

Init(List)

Add(cKey,Value)

Add item to the HashTable

Set(cKey,Value)

Set item value using the Key

GetValue(cKey)

Get item value using the Key

Contains(cKey)

Check if the HashTable contains item using the Key

Index(cKey)

Get the item index using the Key

example:

Load "stdlib.ring"

ohashtable = new hashtable
See "Test the hashtable Class Methods" + nl
ohashtable {
        Add("Egypt","Cairo")
        Add("KSA","Riyadh")
        see self["Egypt"] + nl
        see self["KSA"] + nl
        see contains("Egypt") + nl
        see contains("USA") + nl
        see index("KSA")  + NL
        print()
        delete(index("KSA"))
        see copy("*",60) + nl
        print()
}

output:

Test the hashtable Class Methods
Cairo
Riyadh
1
0
2
Egypt
Cairo
KSA
Riyadh
************************************************************
Egypt
Cairo

Tree Class

Data:

Attribute

Description

Data

Node Value

Children

Children List

Methods:

Method

Description/Output

set(value)

Set the node value.

value()

Get the node value.

Add(value)

Add new child.

parent()

Get the parent node.

print()

Print the tree nodes.

example:

Load "stdlib.ring"

otree = new tree
See "Test the tree Class Methods" + nl
otree {
        set("The first step")   # set the root node value
        see value() + nl
        Add("one")
        Add("two")
        Add("three") {
                Add("3.1")
                Add("3.2")
                Add("3.3")
                see children
        }
        see children
        oTree.children[2] {
                Add("2.1") Add("2.2") Add("2.3") {
                        Add("2.3.1") Add("2.3.2") Add("test")
                }
        }
        oTree.children[2].children[3].children[3].set("2.3.3")
}
see copy("*",60) + nl
oTree.print()

output:

Test the tree Class Methods
The first step
data: 3.1
parent: List...
children: List...
data: 3.2
parent: List...
children: List...
data: 3.3
parent: List...
children: List...
data: one
parent: List...
children: List...
data: two
parent: List...
children: List...
data: three
parent: List...
children: List...
************************************************************
one
two
2.1
2.2
2.3
2.3.1
2.3.2
2.3.3
three
3.1
3.2
3.3

Math Class

Methods:

Method

Description

sin(x)

Returns the sine of an angle of x radians

cos(x)

Returns the cosine of an angle of x radians

tan(x)

Returns the tangent of an angle of x radians

asin(x)

Returns the principal value of the arc sine of x, expressed in radians

acos(x)

Returns the principal value of the arc cosine of x, expressed in radians

atan(x)

Returns the principal value of the arc tangent of x, expressed in radians

atan2(y,x)

Returns the principal arc tangent of y/x, in the interval [-pi,+pi] radians

sinh(x)

Returns the hyperbolic sine of x radians

cosh(x)

Returns the hyperbolic cosine of x radians

tanh(x)

Returns the hyperbolic tangent of x radians

exp(x)

Returns the value of e raised to the xth power

log(x)

Returns the natural logarithm of x

log10(x)

Returns the common logarithm (base-10 logarithm) of x

ceil(x)

Returns the smallest integer value greater than or equal to x

floor(x)

Returns the largest integer value less than or equal to x

fabs(x)

Returns the absolute value of x.

pow(x,y)

Returns x raised to the power of y

sqrt(x)

Returns the square root of x

random(x)

Returns a random number in the range [0,x]

unsigned(n,n,c)

Perform operation using unsigned numbers

decimals(n)

Determine the decimals digits after the point in float/double numbers

example:

Load "stdlib.ring"

oMath = new Math

See "Test the Math Class Methods" + nl
See "Sin(0) = " + oMath.sin(0) + nl
See "Sin(90) radians = " + oMath.sin(90) + nl
See "Sin(90) degree = " + oMath.sin(90*3.14/180) + nl

See "Cos(0) = " + oMath.cos(0) + nl
See "Cos(90) radians = " + oMath.cos(90) + nl
See "Cos(90) degree = " +oMath. cos(90*3.14/180) + nl

See "Tan(0) = " + oMath.tan(0) + nl
See "Tan(90) radians = " + oMath.tan(90) + nl
See "Tan(90) degree = " + oMath.tan(90*3.14/180) + nl

See "asin(0) = " + oMath.asin(0) + nl
See "acos(0) = " + oMath.acos(0) + nl
See "atan(0) = " + oMath.atan(0) + nl
See "atan2(1,1) = " +oMath. atan2(1,1) + nl

See "sinh(0) = " + oMath.sinh(0) + nl
See "sinh(1) = " + oMath.sinh(1) + nl
See "cosh(0) = " + oMath.cosh(0) + nl
See "cosh(1) = " + oMath.cosh(1) + nl
See "tanh(0) = " + oMath.tanh(0) + nl
See "tanh(1) = " + oMath.tanh(1) + nl

See "exp(0) = " + oMath.exp(0) + nl
See "exp(1) = " + oMath.exp(1) + nl
See "log(1) = " + oMath.log(1) + nl
See "log(2) = " + oMath.log(2) + nl
See "log10(1) = " + oMath.log10(1) + nl
See "log10(2) = " + oMath.log10(2) + nl
See "log10(10) = " + oMath.log10(10) + nl

See "Ceil(1.12) = " + oMath.Ceil(1.12) + nl
See "Ceil(1.72) = " + oMath.Ceil(1.72) + nl

See "Floor(1.12) = " + oMath.floor(1.12) + nl
See "Floor(1.72) = " + oMath.floor(1.72) + nl

See "fabs(1.12) = " + oMath.fabs(1.12) + nl
See "fabs(1.72) = " + oMath.fabs(1.72) + nl

See "pow(2,3) = " + oMath.pow(2,3) + nl

see "sqrt(16) = " + oMath.sqrt(16) + nl

for x = 1 to 20
                see "Random number Max (100) : " + oMath.random(100) + nl
next

x = 1.1234567890123
for d = 0 to 14
        oMath.decimals(d)
        see x + nl
next

cKey = "hello"

h = 0
for x in cKey
        h = oMath.unsigned(h,ascii(x),"+")
        h = oMath.unsigned(h,oMath.unsigned(h,10,"<<"),"+")
        r = oMath.unsigned(h,6,">>")
        h = oMath.unsigned(h, r,"^")
next
h = oMath.unsigned(h,oMath.unsigned(h,3,"<<"),"+")
h = oMath.unsigned(h,oMath.unsigned(h,11,">>"),"^")
h = oMath.unsigned(h,oMath.unsigned(h,15,"<<"),"+")

see "Hash : " + h

output:

Test the Math Class Methods
Sin(0) = 0
Sin(90) radians = 0.89
Sin(90) degree = 1.00
Cos(0) = 1
Cos(90) radians = -0.45
Cos(90) degree = 0.00
Tan(0) = 0
Tan(90) radians = -2.00
Tan(90) degree = 1255.77
asin(0) = 0
acos(0) = 1.57
atan(0) = 0
atan2(1,1) = 0.79
sinh(0) = 0
sinh(1) = 1.18
cosh(0) = 1
cosh(1) = 1.54
tanh(0) = 0
tanh(1) = 0.76
exp(0) = 1
exp(1) = 2.72
log(1) = 0
log(2) = 0.69
log10(1) = 0
log10(2) = 0.30
log10(10) = 1
Ceil(1.12) = 2
Ceil(1.72) = 2
Floor(1.12) = 1
Floor(1.72) = 1
fabs(1.12) = 1.12
fabs(1.72) = 1.72
pow(2,3) = 8
sqrt(16) = 4
Random number Max (100) : 87
Random number Max (100) : 49
Random number Max (100) : 99
Random number Max (100) : 58
Random number Max (100) : 15
Random number Max (100) : 46
Random number Max (100) : 37
Random number Max (100) : 64
Random number Max (100) : 73
Random number Max (100) : 35
Random number Max (100) : 89
Random number Max (100) : 80
Random number Max (100) : 20
Random number Max (100) : 33
Random number Max (100) : 44
Random number Max (100) : 89
Random number Max (100) : 82
Random number Max (100) : 94
Random number Max (100) : 83
Random number Max (100) : 68
1
1.1
1.12
1.123
1.1235
1.12346
1.123457
1.1234568
1.12345679
1.123456789
1.1234567890
1.12345678901
1.123456789012
1.1234567890123
1.12345678901230
Hash : 3372029979.00000000000000

DateTime Class

Methods:

Method

Description/Output

clock()

The number of clock ticks from program start.

time()

Get the system time.

date()

Get the date.

timelist()

List contains the date and the time information.

adddays(cDate,nDays)

Return Date from cDate and after nDays

diffdays(cDate1,cDate2)

Return the Number of days (cDate1 - cDate2)

example:

Load "stdlib.ring"

oDateTime = new datetime

See "Test the datetime Class Methods" + nl

See "Calculate performance" + nl
t1 = oDateTime.clock()
for x = 1 to 1000000 next
see oDateTime.clock() - t1 + nl

See "Time : " + oDateTime.time() + nl

See "Date : " + oDateTime.date() + nl

See oDateTime.TimeList()

See "Month Name : " + oDateTime.TimeList()[4]

cDate = oDateTime.date()
see cDate + nl
cDate = oDateTime.adddays(cDate,10)
see cDate + nl

cDate1 = oDateTime.date()
see cDate1 + nl
cDate2 = oDateTime.adddays(cDate1,10)
see cDate2 + nl
see "DiffDays = " + oDateTime.diffdays(cDate1,cDate2) + nl
see "DiffDays = " + oDateTime.diffdays(cDate2,cDate1) + nl

output:

Test the datetime Class Methods
Calculate performance
85
Time : 02:53:35
Date : 31/08/2016
Wed
Wednesday
Aug
August
08/31/16 02:53:35
31
02
02
244
08
53
AM
35
35
3
08/31/16
02:53:35
16
2016
Arab Standard Time
%
Month Name : August31/08/2016
10/09/2016
31/08/2016
10/09/2016
DiffDays = -10
DiffDays = 10

File Class

Methods:

Method

Description/Output

read(cFileName)

Read the file content

write(cFileName,cStr)

Write string to file

dir(cFolderPath)

Get the folder contents (files & sub folders)

rename(cOld,cNew)

Rename files using the Rename() function

remove(cFileName)

Delete a file using the Remove() function

open(cFileName,cMode)

Open a file using the Fopen() function

close()

Close file

flush()

Flushes the output buffer of a stream

reopen(cFileName,cMode)

Open another file using the same file handle

tempfile()

Creates a temp. file (binary).

seek(noffset,nwhence)

Set the file position of the stream

tell()

Know the current file position of a stream

rewind()

Set the file position to the beginning of the file

getpos()

Get handle to the current file position

setpos(poshandle)

Set the current file position

clearerr()

Clear the EOF error and the error indicators of a stream

eof()

Test the end-of-file indicator

error()

Test the error indicator

perror(cErrorMessage)

Print error message to the stderr

getc()

Get the next character from the stream

gets(nsize)

Read new line from the stream

putc(cchar)

Write a character to the stream

puts(cStr)

Write a string to the stream

ungetc(cchar)

Push a character to the stream

fread(nsize)

Read data from a stream

fwrite(cString)

Write data to a stream

exists(cFileName)

Check if a file exists

example:

Load "stdlib.ring"

ofile = new file

See "Test the file Class Methods" + nl
see ofile.read(filename())

see nl
ofile.open(filename(),"r")
see ofile.gets(100) + nl
ofile.close()

System Class

Methods:

Method

Description/Output

system()

Execute system commands

sysget()

Get environment variables

ismsdos()

Check if the operating system is MSDOS or not

iswindows()

Check if the operating system is Windows or not

iswindows64()

Check if the operating system is Windows 64bit or not

isunix()

Check if the operating system is Unix or not

ismacosx()

Check if the operating system is macOS or not

islinux()

Check if the operating system is Linux or not

isfreebsd()

Check if the operating system is FreeBSD or not

isandroid()

Check if the operating system is Android or not

windowsnl()

Get the windows new line string

sysargv()

Get the command line arguments passed to the ring script

filename()

Get the active source file

example:

Load "stdlib.ring"

oSystem = new System

See "Test the System Class Methods" + nl

oSystem.system("dir")
see oSystem.sysget("path") + nl
see oSystem.ismsdos() + nl
see oSystem.iswindows() + nl
see oSystem.iswindows64() + nl
see oSystem.isunix() + nl
see oSystem.ismacosx() + nl
see oSystem.islinux() + nl
see oSystem.isfreebsd() + nl
see oSystem.isandroid() + nl
see oSystem.windowsnl() + nl
see oSystem.sysargv() + nl
see oSystem.filename() + nl

Debug Class

Methods:

Method

Description/Output

eval(cCode)

Execute code during the runtime from string.

raise(cError)

Raise an exception.

assert(cCondition)

Test condition before executing the code.

example:

Load "stdlib.ring"

oDebug = new Debug
See "Test the Debug Class Methods" + nl
oDebug.eval("see 'Hello'+nl")
try
        x = 10
        oDebug.assert(x=11)
catch see "assert" + nl done
raise("Error!")

DataType Class

Methods:

Method

Description/Output

isstring(vValue)

We can know if the value is a string or not.

isnumber(vValue)

We can know if the value is a number or not.

islist(vValue)

We can know if the value is a list or not.

type(vValue)

Know the type of a value

isnull(vValue)

Check the value to know if it’s null or not.

isalnum(vValue)

1 if the value is digit/letter or 0 if not

isalpha(vValue)

1 if the value is a letter or 0 if not

iscntrl(vValue)

1 if the value is a control character (no printing position)

isdigit(vValue)

1 if the value is a digit or 0 if not

isgraph(vValue)

1 if the value can be printed (Except space) or 0 if not

islower(vValue)

1 if the value is lowercase letter or 0 if not

isprint(vValue)

1 if the value occupies a printing position or 0 if not

ispunct(vValue)

1 if the value is a punctuation character or 0 if not

isspace(vValue)

1 if the value is a white-space or 0 if not

isupper(vValue)

1 if the value is an uppercase alphabetic letter or 0 if not

isxdigit(vValue)

1 if the value is a hexadecimal digit character or 0 if not

example:

Load "stdlib.ring"

oDataType = new DataType
See "Test the DataType Class Methods" + nl
see oDataType.isstring("test") + nl
see oDataType.isnumber(1) + nl
see oDataType.islist(1:3) + nl
see oDataType.type("test") + nl
see oDataType.isnull(null) + nl
see oDataType.isalnum("Hello") + nl +     # print 1
oDataType.isalnum("123456") + nl +    # print 1
oDataType.isalnum("ABCabc123") + nl + # print 1
oDataType.isalnum("How are you")  + nl     # print 0 because of spaces
see oDataType.isalpha("Hello") + nl +     # print 1
oDataType.isalpha("123456") + nl +    # print 0
oDataType.isalpha("ABCabc123") + nl + # print 0
oDataType.isalpha("How are you")  + nl    # print 0
See oDataType.iscntrl("hello") + nl +     # print 0
oDataType.iscntrl(nl)                 # print 1
see oDataType.isdigit("0123456789") + nl +        # print 1
oDataType.isdigit("0123a") + nl
see oDataType.isgraph("abcdef") + nl +    # print 1
oDataType.isgraph("abc def")   + nl        # print 0
see oDataType.islower("abcDEF") + nl +    # print 0
oDataType.islower("ghi") + nl          # print 1
see oDataType.isprint("Hello") + nl +             # print 1
oDataType.isprint("Nice to see you") + nl +   # print 1
oDataType.isprint(nl)    + nl                      # print 0
see oDataType.isprint("Hello") + nl              # print 1
see oDataType.isupper("welcome") + nl +    # print 0
oDataType.isupper("WELCOME")  + nl         # print 1
see oDataType.isxdigit("0123456789abcdef") + nl +  # print 1
oDataType.isxdigit("123z")                     # print 0

Output:

Test the DataType Class Methods
1
1
1
STRING
1
1
1
1
0
1
0
0
0
0
11
0
1
0
0
1
1
1
0
1
0
1
1
0

Conversion Class

Methods:

Method

Description/Output

number(vValue)

Convert strings to numbers.

string(vValue)

Convert numbers to strings.

ascii(vValue)

Get the ASCII code for a letter.

char(vValue)

Convert the ASCII code to character.

hex(vValue)

Convert decimal to hexadecimal.

dec(vValue)

Convert hexadecimal to decimal.

str2hex(vValue)

Convert string characters to hexadecimal characters.

hex2str(vValue)

Convert hexadecimal characters to string.

example:

Load "stdlib.ring"

oConversion = new conversion
See "Test the conversion Class Methods" + nl
See oConversion.number("3") + 5  + nl
See oConversion.string(3) + "5" + nl
See oConversion.Ascii("m") + nl
See oConversion.char(77) + nl
see oConversion.hex(162) + nl
see oConversion.dec("a2") + nl
cHex = oConversion.str2hex("Hello")
see cHex + nl
see oConversion.hex2str(cHex) + nl

Output:

Test the conversion Class Methods
8
35
109
M
a2
162
48656c6c6f
Hello

ODBC Class

Methods:

Method

Description/Output

drivers()

Get a list of ODBC drivers.

datasources()

Get a list of ODBC data sources.

close()

Free resources.

connect(cConString)

Connect to the database.

disconnect()

Close the connection.

execute(cSQL)

Execute SQL Statements

colcount()

Get columns count in the query result

fetch()

Fetch a row from the query result

getdata(nCol)

Get column value from the fetched row

tables()

Get a list of tables inside the database

columns(cTableName)

Get a list of columns inside the table

autocommit(lStatus)

Enable or disable the auto commit feature

commit()

Commit updates to the database

rollback()

Rollback updates to the database

example:

Load "stdlib.ring"

oodbc = new odbc
See "Test the odbc Class Methods" + nl
oODBC {
        see drivers()
        see datasources()
        See "Connect to database" + nl
        see connect("DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
        See "Select data" + nl
        see execute("select * from person") + nl
        nMax = colcount()
        See "Columns Count : " + nMax + nl
        while fetch()
                See "Row data:" + nl
                for x = 1 to nMax
                        see getdata(x) + " - "
                next
        end
        See "Close database..." + nl
        disconnect()
        close()
}

MySQL Class

Methods:

Method

Description/Output

info()

Return string contains the MySQL Client version.

error()

Get the error message from the MySQL Client.

connect(cServer,cUser,cPass,cDatabase)

Connect to the MySQL database server.

close()

Close the connection to the MySQL database.

query(cQuery)

Execute SQL queries.

insert_id()

Get the inserted row id.

result()

Get the query result (data without column names).

next_result()

Move to the next query result.

columns()

Get a list of columns names.

result2()

Get all of the column names then the query result in one list.

escape_string(cStr)

Before storing binary data and special characters in the database.

autocommit(lStatus)

Enable or disable the auto commit feature.

commit()

Commit updates to the database.

rollback()

Rollback updates to the database.

example:

Load "stdlib.ring"

omysql = new mysql
See "Test the MySQL Class Methods" + nl
omysql {
        see info() + nl
        connect("localhost", "root", "root","mahdb")
        see "Execute Query" + nl
        query("SELECT * FROM Employee")
        see "Print Result" + nl
        see result2()
        see "Close database" + nl
        close()
}

Output:

Test the MySQL Class Methods
5.5.30
Execute Query
Print Result
Id
Name
Salary
1
Mahmoud
15000
2
Samir
16000
3
Fayed
17000
Close database

SQLite Class

Methods:

Method

Description/Output

open(cDatabase)

Open Database.

close()

Close Database.

errormessage()

Get Error Message.

execute(cSQL)

Execute Query.

example:

Load "stdlib.ring"

osqlite = new sqlite
See "Test the sqlite Class Methods" + nl
osqlite {
        open("test.db")
        sql = "CREATE TABLE COMPANY("  +
                "ID INT PRIMARY KEY     NOT NULL," +
                 "NAME           TEXT    NOT NULL," +
                 "AGE            INT     NOT NULL," +
                 "ADDRESS        CHAR(50)," +
                 "SALARY         REAL );"

        execute(sql)

        sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
                 "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "     +
                 "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
                 "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"

        execute(sql)

        aResult =  execute("select * from COMPANY")
        for x in aResult
                for t in x
                        see t[2] + nl
                next
        next
        see copy("*",50)  + nl
        for x in aResult
                see x["name"] + nl
        next
        close()
}

Output:

Test the sqlite Class Methods
1
Mahmoud
29
Jeddah
20000.0
2
Ahmed
27
Jeddah
15000.0
3
Mohammed
31
Egypt
20000.0
4
Ibrahim
24
Egypt
65000.0
**************************************************
Mahmoud
Ahmed
Mohammed
Ibrahim

PostgreSQL Class

Methods:

Method

Description/Output

init(cConString)

Open Database.

close()

Close Database.

execute(cSQL)

Execute Query.

example:

load "stdlib.ring"

oPostgreSQL = new PostgreSQL("user=postgres password=sa dbname = mahdb")

See "Test the PostgreSQL Class Methods" + nl

oPostgreSQL {

        sql = "CREATE TABLE COMPANY_TEST("  +
                "ID INT PRIMARY KEY     NOT NULL," +
                 "NAME           TEXT    NOT NULL," +
                 "AGE            INT     NOT NULL," +
                 "ADDRESS        CHAR(50)," +
                 "SALARY         REAL );"

        execute(sql)

        sql = "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
                 "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "     +
                 "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
                 "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"

        execute(sql)

        ?  execute("select * from COMPANY_TEST")

        ? copy("*",50)

        close()
}

Output:

Test the PostgreSQL Class Methods
id
name
age
address
salary
1
Mahmoud
29
Jeddah
20000
2
Ahmed
27
Jeddah
15000
3
Mohammed
31
Egypt
20000
4
Ibrahim
24
Egypt
65000

**************************************************

Security Class

Methods:

Method

Description/Output

md5(cString)

Calculate the MD5 hash.

sha1(cString)

Calculate the SHA1 hash.

sha256(cString)

Calculate the SHA256 hash.

sha512(cString)

Calculate the SHA512 hash.

sha384(cString)

Calculate the SHA384 hash.

sha224(cString)

Calculate the SHA224 hash.

encrypt(cString,cKey,cIV)

Encrypts the data using the Blowfish algorithm in CBC mode.

decrypt(cString,cKey,cIV)

Decrypt the encrypted data using the Blowfish algorithm in CBC mode.

encrypt_ex(cString,cKey,cIV,cCipher)

Encrypts the data using the given cipher algorithm.

decrypt_ex(cString,cKey,cIV,cCipher)

Decrypt the encrypted data using the given cipher algorithm.

supportedciphers()

List all supported cipher algorithms for encryption/decryption.

randbytes(nSize)

Generate a string of cryptographically secure pseudo-random bytes.

example:

Load "stdlib.ring"

oSecurity = new security
See "Test the security Class Methods" + nl
oSecurity {
        see md5("hello") + nl +
        sha1("hello") + nl + sha256("hello") + nl +
        sha512("hello") + nl + sha384("hello") + nl +
        sha256("hello") + nl
        list = 0:15  cKey=""   for x in list cKey += char(x) next
        list = 1:8   cIV = ""   for x in list cIV += char(x) next
        cCipher = encrypt("hello",cKey,cIV)
        see cCipher + nl + decrypt(cCipher,cKey,cIV) + nl
}

Internet Class

Methods:

  • download(cURL)

  • sendemail(cSMTPServer,cEmail,cPassword,cSender,cReceiver,cCC,cTitle,cContent)

example:

Load "stdlib.ring"

ointernet = new internet
See "Test the internet Class Methods" + nl
ointernet {
        see download("www.ring-lang.sf.net")
}