// NETMdbTools.h
#pragma once
#include <map>
#include "../MdbToolsLib/MdbLibDatabase.h"
#include "../MdbToolsLib/MdbLibTable.h"
using namespace System;
using namespace System::Collections;
using namespace std;
namespace NETMdbTools
{
public enum class NETMdbColType
{
NETMdb_BOOL = 0x01,
NETMdb_BYTE = 0x02,
NETMdb_INT = 0x03,
NETMdb_LONGINT = 0x04,
NETMdb_MONEY = 0x05,
NETMdb_FLOAT = 0x06,
NETMdb_DOUBLE = 0x07,
NETMdb_DATETIME = 0x08,
NETMdb_BINARY = 0x09,
NETMdb_TEXT = 0x0a,
NETMdb_OLE = 0x0b,
NETMdb_MEMO = 0x0c,
NETMdb_REPID = 0x0f,
NETMdb_NUMERIC = 0x10
};
ref class NETMdbTable;
public ref class NETMdbDatabase
{
public:
NETMdbDatabase();
~NETMdbDatabase();
bool Open(String^ strfilename);
void Close();
void LoadTables();
bool IsOpen() { return libdatabase->mdb != 0; }
void MoveFirstTable();
bool MoveNextTable();
NETMdbTable^ GetTable();
NETMdbTable^ GetTableByName(String^ strname);
private:
map<char*, CMdbLibTable, cmp_str>::iterator* itr;
NETMdbTable^ table;
CMdbLibDatabase* libdatabase;
};
ref class NETMdbColumn;
ref class NETMdbValue;
public ref class NETMdbTable
{
public:
NETMdbTable();
~NETMdbTable();
void ClearTableColumns();
void LoadTableColumns();
bool CursorNextItem();
void CursorMoveFirst();
String^ Name;
bool IsSystem;
CMdbLibTable* table;
void LoadFromLib();
void MoveFirstCol();
bool NextCol();
NETMdbColumn^ GetCol();
NETMdbColumn^ GetColByName(String^ strname);
NETMdbValue^ GetValue(String^ strcolname);
private:
NETMdbColumn^ column;
map<char*, CMdbLibColumn, cmp_str>::iterator* itr;
NETMdbValue^ value;
};
public ref class NETMdbColumn
{
public:
String^ Name;
NETMdbColType GetType() { return (NETMdbColType)column->Type; }
int GetSize()
{
return column->Size;
}
CMdbLibColumn* column;
void LoadFromLib()
{
Name = gcnew String(column->Name);
}
bool IsInt() { return column->IsInt(); }
bool IsNumDec() { return column->IsNumDec(); }
bool IsBinary() { return column->IsBinary(); }
bool IsDate() { return column->IsDate(); }
};
public ref class NETMdbValue
{
public:
String^ Value;
int GetIntValue() { return value->GetIntValue(); }
double GetDoubleValue() { return value->GetDoubleValue(); }
DateTime^ GetTimeValue();
CMdbLibValue* value;
int GetLen() { return value->len; }
void LoadFromLib()
{
Value = gcnew String(value->value);
ptrvalue = (IntPtr)(value->value);
}
IntPtr ptrvalue;
};
}