//+------------------------------------------------------------------+
//| Fonction de lancement du programme |
//+------------------------------------------------------------------+
void OnStart()
{
string filename="departments.sqlite";
//--- crée ou ouvre une base de données dans le répertoire commun du terminal
int db=DatabaseOpen(filename, DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE |DATABASE_OPEN_COMMON);
if(db==INVALID_HANDLE)
{
Print("DB: ", l'ouverture du fichier filename, " a échouée avec le code ", GetLastError());
return;
}
//--- crée la table COMPANY
if(!CreataTableCompany(db))
{
DatabaseClose(db);
return;
}
//--- crée la table DEPARTMENT
if(!CreataTableDepartment(db))
{
DatabaseClose(db);
return;
}
//--- affiche la liste de tous les champs des tables COMPANY et DEPARTMENT
PrintFormat("Essaye d'imprimer la requête \"PRAGMA TABLE_INFO(COMPANY);PRAGMA TABLE_INFO(DEPARTMENT)\"");
if(DatabasePrint(db, "PRAGMA TABLE_INFO(COMPANY);PRAGMA TABLE_INFO(DEPARTMENT)", 0)<0)
{
PrintFormat("Echec de DatabasePrint(\"PRAGMA TABLE_INFO()\"), code d'erreur=%d", GetLastError());
DatabaseClose(db);
return;
}
//--- affiche la table COMPANY dans le journal
PrintFormat("Essaye d'imprimer la requête \"SELECT * from COMPANY\"");
if(DatabasePrint(db, "SELECT * from COMPANY", 0)<0)
{
Print("Echec de DatabasePrint avec le code ", GetLastError());
DatabaseClose(db);
return;
}
//--- récupère le texte des tables COMPANY et DEPARTMENT
string request="SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT "
"ON COMPANY.ID = DEPARTMENT.EMP_ID";
//--- affiche le résultat combiné
PrintFormat("Essaye d'imprimer la requête \"SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT\"");
if(DatabasePrint(db, request, 0)<0)
{
Print("Echec de DatabasePrint avec le code ", GetLastError());
DatabaseClose(db);
return;
}
//--- ferme la base de données
DatabaseClose(db);
}
/*
Conclusion :
Essaye d' imprimer la requête "PRAGMA TABLE_INFO(COMPANY);PRAGMA TABLE_INFO(DEPARTMENT)"
#| cid name type notnull dflt_value pk
-+-------------------------------------------
1| 0 ID INT 1 1
2| 1 NAME TEXT 1 0
3| 2 AGE INT 1 0
4| 3 ADDRESS CHAR(50) 0 0
5| 4 SALARY REAL 0 0
#| cid name type notnull dflt_value pk
-+------------------------------------------
1| 0 ID INT 1 1
2| 1 DEPT CHAR(50) 1 0
3| 2 EMP_ID INT 1 0
Essaye d' imprimer la requête "SELECT * from COMPANY"
#| ID NAME AGE ADDRESS SALARY
-+--------------------------------
1| 1 Paul 32 California 25000.0
2| 2 Allen 25 Texas 15000.0
3| 3 Teddy 23 Norway 20000.0
4| 4 Mark 25 Rich-Mond 65000.0
5| 5 David 27 Texas 85000.0
6| 6 Kim 22 South-Hall 45000.0
7| 7 James 24 Houston 10000.0
Try to print request "SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT"
#| EMP_ID NAME DEPT
-+-------------------------
1| 1 Paul IT Billing
2| 2 Allen Engineering
3| Teddy
4| Mark
5| David
6| Kim
7| 7 James Finance
*/
//+------------------------------------------------------------------+
//| Crée la table COMPANY |
//+------------------------------------------------------------------+
bool CreateTableCompany(int database)
{
//--- supprime la table COMPANY si elle existe
if(DatabaseTableExists(database, "COMPANY"))
{
//--- supprime la table
if(!DatabaseExecute(database, "DROP TABLE COMPANY"))
{
Print("Echec de la suppression de la table COMPANY avec le code ", GetLastError());
return(false);
}
}
//--- crée la table COMPANY
if(!DatabaseExecute(database, "CREATE TABLE COMPANY("
"ID INT PRIMARY KEY NOT NULL,"
"NAME TEXT NOT NULL,"
"AGE INT NOT NULL,"
"ADDRESS CHAR(50),"
"SALARY REAL );"))
{
Print("DB: échec de création de la table COMPANY avec le code ", GetLastError());
return(false);
}
//--- insére les données dans la table COMPANY
if(!DatabaseExecute(database, "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 25000.00); "
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00); "
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00); "
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00); "
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.0); "
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.0); "
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (7, 'James', 24, 'Houston', 10000.00); "))
{
Print("Echec de l'insertion dans COMPANY avec le code ", GetLastError());
return(false);
}
//--- succès
return(true);
}
//+------------------------------------------------------------------+
//| Crée la table DEPARTMENT |
//+------------------------------------------------------------------+
bool CreateTableDepartment(int database)
{
//--- supprime la table DEPARTMENT si elle existe
if(DatabaseTableExists(database, "DEPARTMENT"))
{
//--- supprime la table
if(!DatabaseExecute(database, "DROP TABLE DEPARTMENT"))
{
Print("Echec de la suppression de la table DEPARTMENT avec le code ", GetLastError());
return(false);
}
}
//--- crée la table DEPARTMENT
if(!DatabaseExecute(database, "CREATE TABLE DEPARTMENT ("
"ID INT PRIMARY KEY NOT NULL,"
"DEPT CHAR(50) NOT NULL,"
"EMP_ID INT NOT NULL);"))
{
Print("DB: échec de création de la table DEPARTMENT avec le code ", GetLastError());
return(false);
}
//--- insére les données dans la table DEPARTMENT
if(!DatabaseExecute(database, "INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) VALUES (1, 'IT Billing', 1); "
"INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) VALUES (2, 'Engineering', 2); "
"INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) VALUES (3, 'Finance', 7);"))
{
Print("Echec de l'insertion dans DEPARTMENT avec le code ", GetLastError());
return(false);
}
//--- succès
return(true);
}
//+-------------------------------------------------------------------
|