summaryrefslogtreecommitdiff
path: root/mg_database.c
blob: 1636262a97ea620070c21aa45e9ab3bbe7932fdc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*! \file   mg_database.c
 *  \brief  A capsule around MySql database access
 *
 * \version $Revision: 1.2 $
 * \date    $Date$
 * \author  Ralf Klueber, Lars von Wedel, Andreas Kellner
 * \author  file owner: $Author$
 */

#include "mg_database.h"
#include "mg_tools.h"

#include <stdarg.h>

static const int MAX_QUERY_BUFLEN = 2048;

mgDB::mgDB() 
{
}

mgDB::mgDB(std::string host, std::string name, 
	   std::string user, std::string pass,
	   int port)
{
}

mgDB::~mgDB()
{
}

MYSQL mgDB::getDBHandle()
{

  return m_dbase;
}

std::string mgDB::escape_string( MYSQL *db, std::string s )
{
  char *escbuf = (char *) malloc( 2*s.size() + 1 );

  int len = mysql_real_escape_string( db, escbuf, s.c_str(), s.size() );

  std::string r = std::string( escbuf );
  free( escbuf );

  return r;
}

MYSQL_RES* mgDB::read_query( const char *fmt, ...)
{
  char querybuf[MAX_QUERY_BUFLEN];
  va_list ap;
  va_start( ap, fmt );  
  vsnprintf( querybuf, MAX_QUERY_BUFLEN-1, fmt, ap );
  
  if( mysql_query( &m_dbase, querybuf) )
    {
      mgError( "SQL error in MUGGLE:\n%s\n", querybuf );
    }
  
  MYSQL_RES *result = mysql_store_result( &m_dbase );
  
  va_end(ap);
  return result;
}

void mgDB::write_query( const char *fmt, ... )
{
  char querybuf[MAX_QUERY_BUFLEN];
  va_list ap;
  va_start( ap, fmt );
  vsnprintf( querybuf, MAX_QUERY_BUFLEN-1, fmt, ap );
  
  if( mysql_query( &m_dbase, querybuf ) )
    {
      mgError( "SQL error in MUGGLE:\n%s\n", querybuf );
    }
  
  va_end(ap);
}