Index: server/DataAccess.cpp
===================================================================
--- server/DataAccess.cpp	(revision 36082e8da46faa5286c4d484339f532acef8e17d)
+++ server/DataAccess.cpp	(revision 59061f6452ccd0881ef056346bd48a79f97c8395)
@@ -2,6 +2,5 @@
 
 #include <iostream>
-
-#include <mysql/mysql.h>
+#include <sstream>
 
 using namespace std;
@@ -9,35 +8,66 @@
 DataAccess::DataAccess()
 {
+   mysql_init(&mysql);
+   connection = mysql_real_connect(&mysql, "localhost", "pythonAdmin", "pyMaster09*", "pythondb", 0, 0, 0);
+
+   if (connection == NULL) {
+      cout << mysql_error(&mysql) << endl;
+   }else
+      cout << "Connection successful" << endl;
 }
 
 DataAccess::~DataAccess()
 {
+   mysql_close(connection);
+   mysql_close(&mysql);
 }
 
-int DataAccess::dbtest()
+int DataAccess::insertPlayer(string username, string password)
 {
-   MYSQL *connection, mysql;
+   ostringstream oss;
+
+   oss << "'" << username << "', '" << password << "'";
+
+   return insert("users", "name, password", oss.str());
+}
+
+Player *DataAccess::getPlayer(string username)
+{
    MYSQL_RES *result;
    MYSQL_ROW row;
-   int query_state;
+   Player *p;
+   ostringstream oss;
 
-   mysql_init(&mysql);
+   oss << "name='" << username << "'";
 
-   connection = mysql_real_connect(&mysql,"localhost","pythonAdmin","pyMaster09*","pythondb",0,0,0);
+   result = select("users", oss.str().c_str());
 
-   if (connection == NULL) {
-      cout << mysql_error(&mysql) << endl;
-      return 1;
-   }else
-      cout << "Connection successful" << endl;
+   if (result == NULL) {
+      cout << mysql_error(connection) << endl;
+      return NULL;
+   }
 
-   query_state = mysql_query(connection, "SELECT * FROM users");
+   if ( ( row = mysql_fetch_row(result)) != NULL )
+      p = new Player(string(row[1]), string(row[2]));
+   else
+      p = NULL;
 
-   if (query_state !=0) {
+   mysql_free_result(result);
+
+   return p;
+}
+
+int DataAccess::printPlayers()
+{
+   MYSQL_RES *result;
+   MYSQL_ROW row;
+   ostringstream oss;
+
+   result = select("users", "");
+
+   if (result == NULL) {
       cout << mysql_error(connection) << endl;
       return 1;
    }
-
-   result = mysql_store_result(connection);
 
    while ( ( row = mysql_fetch_row(result)) != NULL ) {
@@ -46,8 +76,43 @@
 
    mysql_free_result(result);
-   mysql_close(connection);
-
-   cout << "Test finished" << endl;
 
    return 0;
 }
+
+int DataAccess::insert(string table, string rows, string values)
+{
+   int query_state;
+   ostringstream oss;
+
+   oss << "INSERT into " << table << " (" << rows << ") VALUES (" << values << ")";
+   cout << "query: " << oss.str() << endl;
+
+   query_state = mysql_query(connection, oss.str().c_str());
+
+   if (query_state != 0) {
+      cout << mysql_error(connection) << endl;
+      return 1;
+   }
+
+   return 0;
+}
+
+MYSQL_RES *DataAccess::select(string table, string filter)
+{
+   MYSQL_RES *result;
+   int query_state;
+   ostringstream oss;
+
+   oss << "SELECT * FROM " << table;
+   if (!filter.empty())
+      oss << " WHERE " << filter;
+
+   query_state = mysql_query(connection, oss.str().c_str());
+
+   if (query_state != 0) {
+      cout << mysql_error(connection) << endl;
+      return NULL;
+   }
+
+   return mysql_store_result(connection);
+}
Index: server/DataAccess.h
===================================================================
--- server/DataAccess.h	(revision 36082e8da46faa5286c4d484339f532acef8e17d)
+++ server/DataAccess.h	(revision 59061f6452ccd0881ef056346bd48a79f97c8395)
@@ -1,4 +1,12 @@
 #ifndef _DATA_ACCES_H
 #define _DATA_ACCESS_H
+
+#include <string>
+
+#include <mysql/mysql.h>
+
+#include "Player.h"
+
+using namespace std;
 
 class DataAccess {
@@ -7,5 +15,14 @@
    ~DataAccess();
 
-   int dbtest();
+   int insertPlayer(string username, string password);
+
+   Player *getPlayer(string username);
+   int printPlayers();
+
+   int insert(string table, string rows, string values);
+   MYSQL_RES *select(string table, string filter);
+
+private:
+   MYSQL *connection, mysql;
 };
 
Index: server/Player.cpp
===================================================================
--- server/Player.cpp	(revision 36082e8da46faa5286c4d484339f532acef8e17d)
+++ server/Player.cpp	(revision 59061f6452ccd0881ef056346bd48a79f97c8395)
@@ -6,7 +6,16 @@
 using namespace std;
 
+Player::Player(string name, string password)
+{
+   this->name = name;
+   this->password = password;
+
+   cout << "Created new player: " << this->name << endl;
+}
+
 Player::Player(string name, sockaddr_in addr)
 {
    this->name = name;
+   this->password = "";
    this->addr = addr;
 
@@ -25,2 +34,7 @@
    return eq;
 }
+
+void Player::setAddr(sockaddr_in addr)
+{
+   this->addr = addr;
+}
Index: server/Player.h
===================================================================
--- server/Player.h	(revision 36082e8da46faa5286c4d484339f532acef8e17d)
+++ server/Player.h	(revision 59061f6452ccd0881ef056346bd48a79f97c8395)
@@ -9,10 +9,14 @@
 class Player {
 public:
-   Player(string name, sockaddr_in addr);
+   Player(string name, string password);
+   Player(string name, sockaddr_in addr); // this will be deleted
    ~Player();
 
    bool operator == (const Player &p);
 
+   void setAddr(sockaddr_in addr);
+
    string name;
+   string password;
    sockaddr_in addr;
 };
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision 36082e8da46faa5286c4d484339f532acef8e17d)
+++ server/server.cpp	(revision 59061f6452ccd0881ef056346bd48a79f97c8395)
@@ -63,6 +63,4 @@
 }
 
-// not sure if we actually need this function
-// when I made it, I thought we did
 Player *findPlayerByAddr(vector<Player> &vec, const sockaddr_in &addr)
 {
@@ -100,4 +98,22 @@
       exit(1);
    }
+
+   DataAccess da;
+
+   da.printPlayers();
+
+   da.insertPlayer("playerName3", "playerPass");
+   cout << endl << "Inserted player" << endl << endl;
+
+   Player* p = da.getPlayer("playerName");
+   cout << "player name: " << p->name << endl;
+   delete(p);
+
+   p = da.getPlayer("playerName3");
+   cout << "player name: " << p->name << endl;
+   delete(p);
+
+   da.printPlayers();
+   cout << endl;
    
    sock=socket(AF_INET, SOCK_DGRAM, 0);
@@ -162,5 +178,8 @@
          if (p == NULL)
          {
-            vctPlayers.push_back(Player(username, from));
+            Player newP(username, "");
+            newP.setAddr(from);
+
+            vctPlayers.push_back(newP);
             strcpy(serverMsg.buffer, "I'm thinking of a number between 1 and 1000. Guess what it is.");
          }
