Changeset 59061f6 in network-game for server/DataAccess.cpp


Ignore:
Timestamp:
Nov 27, 2012, 7:03:33 PM (12 years ago)
Author:
dportnoy <dmp1488@…>
Branches:
master
Children:
371ce29
Parents:
36082e8
Message:

Added new data access methods to save and retrieve player data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • server/DataAccess.cpp

    r36082e8 r59061f6  
    22
    33#include <iostream>
    4 
    5 #include <mysql/mysql.h>
     4#include <sstream>
    65
    76using namespace std;
     
    98DataAccess::DataAccess()
    109{
     10   mysql_init(&mysql);
     11   connection = mysql_real_connect(&mysql, "localhost", "pythonAdmin", "pyMaster09*", "pythondb", 0, 0, 0);
     12
     13   if (connection == NULL) {
     14      cout << mysql_error(&mysql) << endl;
     15   }else
     16      cout << "Connection successful" << endl;
    1117}
    1218
    1319DataAccess::~DataAccess()
    1420{
     21   mysql_close(connection);
     22   mysql_close(&mysql);
    1523}
    1624
    17 int DataAccess::dbtest()
     25int DataAccess::insertPlayer(string username, string password)
    1826{
    19    MYSQL *connection, mysql;
     27   ostringstream oss;
     28
     29   oss << "'" << username << "', '" << password << "'";
     30
     31   return insert("users", "name, password", oss.str());
     32}
     33
     34Player *DataAccess::getPlayer(string username)
     35{
    2036   MYSQL_RES *result;
    2137   MYSQL_ROW row;
    22    int query_state;
     38   Player *p;
     39   ostringstream oss;
    2340
    24    mysql_init(&mysql);
     41   oss << "name='" << username << "'";
    2542
    26    connection = mysql_real_connect(&mysql,"localhost","pythonAdmin","pyMaster09*","pythondb",0,0,0);
     43   result = select("users", oss.str().c_str());
    2744
    28    if (connection == NULL) {
    29       cout << mysql_error(&mysql) << endl;
    30       return 1;
    31    }else
    32       cout << "Connection successful" << endl;
     45   if (result == NULL) {
     46      cout << mysql_error(connection) << endl;
     47      return NULL;
     48   }
    3349
    34    query_state = mysql_query(connection, "SELECT * FROM users");
     50   if ( ( row = mysql_fetch_row(result)) != NULL )
     51      p = new Player(string(row[1]), string(row[2]));
     52   else
     53      p = NULL;
    3554
    36    if (query_state !=0) {
     55   mysql_free_result(result);
     56
     57   return p;
     58}
     59
     60int DataAccess::printPlayers()
     61{
     62   MYSQL_RES *result;
     63   MYSQL_ROW row;
     64   ostringstream oss;
     65
     66   result = select("users", "");
     67
     68   if (result == NULL) {
    3769      cout << mysql_error(connection) << endl;
    3870      return 1;
    3971   }
    40 
    41    result = mysql_store_result(connection);
    4272
    4373   while ( ( row = mysql_fetch_row(result)) != NULL ) {
     
    4676
    4777   mysql_free_result(result);
    48    mysql_close(connection);
    49 
    50    cout << "Test finished" << endl;
    5178
    5279   return 0;
    5380}
     81
     82int DataAccess::insert(string table, string rows, string values)
     83{
     84   int query_state;
     85   ostringstream oss;
     86
     87   oss << "INSERT into " << table << " (" << rows << ") VALUES (" << values << ")";
     88   cout << "query: " << oss.str() << endl;
     89
     90   query_state = mysql_query(connection, oss.str().c_str());
     91
     92   if (query_state != 0) {
     93      cout << mysql_error(connection) << endl;
     94      return 1;
     95   }
     96
     97   return 0;
     98}
     99
     100MYSQL_RES *DataAccess::select(string table, string filter)
     101{
     102   MYSQL_RES *result;
     103   int query_state;
     104   ostringstream oss;
     105
     106   oss << "SELECT * FROM " << table;
     107   if (!filter.empty())
     108      oss << " WHERE " << filter;
     109
     110   query_state = mysql_query(connection, oss.str().c_str());
     111
     112   if (query_state != 0) {
     113      cout << mysql_error(connection) << endl;
     114      return NULL;
     115   }
     116
     117   return mysql_store_result(connection);
     118}
Note: See TracChangeset for help on using the changeset viewer.