OSDN Git Service

こっそり、気持ち程度の日本語化しました (UTF-8 / Windows 環境用)。
[ring-lang-081/annotated-ring-with-OmegaT.git] / target / ringlibs / stdlib / stdpostgresql.ring
1 # Ring 標準ライブラリ
2 # アプリケーション用の汎用関数とクラス
3 # 2018, Mahmoud Fayed <msfclipper@yahoo.com>
4
5 Load "stdfunctions.ring"
6 Load "stdlibcore.ring"
7
8 if IsMainSourceFile() 
9         load "postgresqllib.ring"
10         postgresql_class_test()
11 ok
12
13 func postgresql_class_test
14
15         oPostgreSQL = new PostgreSQL("user=postgres password=sa dbname = mahdb")
16         See "Test the PostgreSQL Class Methods" + nl
17         oPostgreSQL {
18
19                 sql = "CREATE TABLE COMPANY_TEST("  +
20                         "ID INT PRIMARY KEY     NOT NULL," +
21                          "NAME           TEXT    NOT NULL," +
22                          "AGE            INT     NOT NULL," +
23                          "ADDRESS        CHAR(50)," +
24                          "SALARY         REAL );"
25
26                 execute(sql)
27
28                 sql = "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY) "  +
29                          "VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
30                          "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY) "  +
31                          "VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "     +
32                          "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY)" +
33                          "VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
34                          "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY)" +
35                          "VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"
36
37                 execute(sql)
38
39                 ?execute("select * from COMPANY_TEST")
40
41                 ?copy("*",50)  
42
43                 close()
44         }
45
46 Class PostgreSQL
47
48         con
49
50         Func init cConString
51                 con = PQconnectdb(cConString)
52                 if (PQstatus(con) != CONNECTION_OK)
53                         raise("Error (PostgreSQL Class) : Can't connect to the database server!")
54                         PQfinish(con)
55                 ok
56                 return con
57
58         Func close
59                 return PQfinish(con)
60
61         Func execute cSQL
62                 res = PQexec(con,cSQL)
63                 aMyQueryResult = []
64                 aResultRow = []
65                 nFields = PQnfields(res)
66                 for i = 1 to nFields
67                         aResultRow + PQfname(res, i-1) 
68                 next
69                 aMyQueryResult + aResultRow             
70                 for i = 1 to PQntuples(res)
71                         aResultRow = []
72                         for j=1 to nFields
73                                 aResultRow + PQgetvalue(res, i-1, j-1) 
74                         next
75                         aMyQueryResult + aResultRow
76                 next            
77                 PQclear(res)
78                 return aMyQueryResult