/Database_Client/windows_version/BezNazwy1.cpp

https://bitbucket.org/ujseproject2013/se2013 · C++ · 247 lines · 164 code · 71 blank · 12 comment · 18 complexity · 3df02eaa3db56439d34b29da80a7ca32 MD5 · raw file

  1. #include <iostream>
  2. #include <libpq-fe.h>
  3. #include <string.h>
  4. #include <fstream>
  5. #include <conio.h>
  6. #include <cstdlib>
  7. using namespace std;
  8. //dane do po³¹czenia
  9. char pghost[] = "localhost";
  10. char pgport[] = "5432";
  11. char pgbase[] = "baza2";
  12. char pgnew_base[] = "nowa.sql";
  13. char pguser[] = "postgres";
  14. char pgpass[] = "postgres";
  15. char szkielet[] = "../sql/szkielet_bazy.sql";
  16. char widoki[] = "../sql/widoki.sql";
  17. char tigerry[] = "../sql/wyzwalacze.sql";
  18. char funkcje[] = "../sql/funkcje.sql";
  19. char dane[] = "../sql/dane_poczatkowe.sql";
  20. /* ************************************************************************* */
  21. void UtworzBaze(PGconn *conn){
  22. PGresult *result;
  23. // TWORZENIE Z DOMYSLNA NAZWA "pgbase[]=baza"
  24. char polecenie[] = "CREATE DATABASE ";
  25. strcat(polecenie, pgbase);
  26. // WYKONANIE POLECENIA
  27. result = PQexec(conn, polecenie);
  28. cout<<PQresStatus(PQresultStatus(result));
  29. cout<<"\n";
  30. cout<<PQresultErrorMessage(result);
  31. cout<<"\n";
  32. PQclear(result);
  33. }
  34. /* ************************************************************************ */
  35. void Rozlacz(PGconn *conn)
  36. {
  37. if (PQstatus(conn) == CONNECTION_OK)
  38. {
  39. PQfinish(conn);
  40. cout<<"polaczenie zakonczone\n";
  41. }else{
  42. cout<<"nie masz aktywnego polaczenia\n";
  43. cout<<PQstatus(conn);
  44. }
  45. }
  46. /* ************************************************************************ */
  47. void Usun(PGconn *conn){
  48. PGresult *result;
  49. // USUWANIE DOMYSLEJ BAZY
  50. char polecenie[]="DROP DATABASE ";
  51. strcat(polecenie, pgbase);
  52. result = PQexec(conn,polecenie);
  53. cout<<PQresStatus(PQresultStatus(result));
  54. cout<<"\n";
  55. cout<<PQresultErrorMessage(result);
  56. cout<<"\n";
  57. PQclear(result);
  58. }
  59. /* ************************************************************************ */
  60. string Wczytaj(PGconn *conn, char *adres){
  61. PGresult *result;
  62. string napisWlasciwy;
  63. fstream plik;
  64. plik.open(adres, ios::in );
  65. if( plik.good() )
  66. {
  67. string napis = "";
  68. while( !plik.eof() )
  69. {
  70. getline( plik, napis );
  71. napisWlasciwy = napisWlasciwy + napis;
  72. napisWlasciwy = napisWlasciwy + "\n";
  73. }
  74. plik.close();
  75. } else return "Error! Nie udalo otworzyc sie pliku!\n";
  76. char wyjscie[napisWlasciwy.length()];
  77. for (int i =0; i < napisWlasciwy.length(); wyjscie [i++] = '\0\t');
  78. napisWlasciwy.copy(wyjscie, napisWlasciwy.length());
  79. result = PQexec(conn, wyjscie);
  80. cout<<PQresStatus(PQresultStatus(result));
  81. cout<<"\n";
  82. cout<<PQresultErrorMessage(result);
  83. cout<<"\n";
  84. PQclear(result);
  85. return wyjscie;
  86. }
  87. /* ************************************************************************ */
  88. void Zaladuj(PGconn *conn, char *sch/*, char *widoki, char *tiggery, char *funkcje, char dane*/)
  89. {
  90. PGresult *result;
  91. string pomocnicza1, pomocnicza2;
  92. Wczytaj(conn, sch);
  93. Wczytaj(conn, tigerry);
  94. Wczytaj(conn, widoki);
  95. Wczytaj(conn, dane);
  96. Wczytaj(conn,funkcje);
  97. }
  98. /* *********************************************************************** */
  99. int main(int argc, char *argv[])
  100. {
  101. PGconn *conn;
  102. PGresult *result;
  103. string sqlCmd = "";
  104. int polecenie;
  105. do{
  106. cout<<"\n 1) Zaladuj baze\n 2) Zrestartuj baze\n 3) Usun baze\n 4) Zapisz do pliku\n";
  107. cout<<"------------------\n";
  108. cout<<" 0) Zakoncz\n\n";
  109. cin>>polecenie;
  110. switch(polecenie){
  111. case 1: /* Utworz Baze */
  112. conn = PQsetdbLogin(pghost,pgport,NULL,NULL,NULL,pguser,pgpass);
  113. if (PQstatus(conn) == CONNECTION_OK){
  114. UtworzBaze(conn);
  115. Rozlacz(conn);
  116. conn = PQsetdbLogin(pghost,pgport,NULL,NULL,pgbase,pguser,pgpass);
  117. PQsetClientEncoding(conn,"UTF8");
  118. if (PQstatus(conn) == CONNECTION_OK){
  119. Zaladuj(conn, szkielet/*, widoki, tiggery, funkcje, dane*/);
  120. Rozlacz(conn);
  121. }else{
  122. cout<<"Error: Blad polaczenia z serverem %s\n";
  123. PQfinish(conn);
  124. }
  125. }else{
  126. cout<<"Error: Blad polaczenia z serverem %s\n";
  127. PQfinish(conn);
  128. }
  129. break;
  130. case 2: /* Restart */
  131. conn = PQsetdbLogin(pghost,pgport,NULL,NULL,NULL,pguser,pgpass);
  132. if (PQstatus(conn) == CONNECTION_OK){
  133. Usun(conn);
  134. UtworzBaze(conn);
  135. Rozlacz(conn);
  136. conn = PQsetdbLogin(pghost,pgport,NULL,NULL,pgbase,pguser,pgpass);
  137. if (PQstatus(conn) == CONNECTION_OK){
  138. Zaladuj(conn, szkielet/*, widoki, tiggery, funkcje, dane*/);
  139. Rozlacz(conn);
  140. }else{
  141. cout<<"Error: Blad polaczenia z serverem %s\n";
  142. PQfinish(conn);
  143. }
  144. }else{
  145. cout<<"Error: Blad polaczenia z serverem %s\n";
  146. PQfinish(conn);
  147. }
  148. break;
  149. case 3: /* Usun baze */
  150. conn = PQsetdbLogin(pghost,pgport,NULL,NULL,NULL,pguser,pgpass);
  151. if (PQstatus(conn) == CONNECTION_OK)
  152. {
  153. // Jeoli polaczenie nawizano
  154. Usun(conn);
  155. Rozlacz(conn);
  156. }else{
  157. // Jesli polaczenie nieudane
  158. cout<<"Error: Blad polaczenie z serverem %s\n";
  159. PQfinish(conn);
  160. }
  161. break;
  162. case 4:
  163. char polecenie[255];
  164. char zmienna[255];
  165. strcpy(polecenie, "C:/Program_Files/PostgreSQL/9.2/bin/pg_dump.exe");
  166. strcpy(zmienna, " pg_dump baza > baza.backup");
  167. strcat(polecenie, zmienna);
  168. system(polecenie);
  169. break;
  170. default :
  171. cout<<"Podales niewlasciwy numer operacji.!\n Sprobuj ponownie\n\n";
  172. break;
  173. }
  174. }while(polecenie != 0);
  175. return 0;
  176. }