/************************************************************************/
/*  Copyright (C), 2016-2020, [IT], 保留所有权利;
/*  模 块 名：;
/*  描    述：;
/*
/*  版    本：[V];	
/*  作    者：[IT];
/*  日    期：[6/4/2016];
/*
/*
/*  注    意：;
/*
/*  修改记录：[IT];
/*  修改日期：;
/*  修改版本：;
/*  修改内容：;
/************************************************************************/
#ifndef __AES_SQLITE3_20160604__
#define __AES_SQLITE3_20160604__

#include "sqlite3.h"
#pragma comment(lib, "SQLite3.lib")

#pragma once

class AesSQLite3
{
	sqlite3*	m_pSQLite3;

	BOOL		m_bSetKey;
	CHAR		m_szKey[MAX_PATH];
	INT			m_nKeyLen;
public:
	AesSQLite3(void);
	~AesSQLite3(void);

	BOOL Open(IN LPCTSTR lpSQLitePath);
	void Close();

	void SetKey(IN LPCTSTR lpKey);
	INT Execute(IN LPCTSTR lpSQL);

private:
	// 将ASCII字符串转成UNICODE字符串;
	WCHAR* ASCII2UNICODE(IN LPCCH lpASCIIStr);
	BOOL   ASCII2UNICODE(IN LPCCH lpASCIIStr, OUT PWCH pUNICODEStr, IN CONST INT& nUNICODEStrLen);

	// 将UNICODE字符串转成ASCII字符串;
	CHAR* UNICODE2ASCII(IN LPWCH lpUNICODEStr);
	BOOL  UNICODE2ASCII(IN LPWCH lpUNICODEStr, OUT LPCH pASCIIStr, IN CONST INT& nASCIIStrLen);

	// 将UNICODE字符串转成UFT8字符串;
	CHAR* UNICODE2UTF8(IN LPWCH lpUNICODEStr);
	BOOL  UNICODE2UTF8(IN LPWCH lpUNICODEStr, OUT LPCH pUTF8Str, IN CONST INT& nUTF8StrLen);

	// 将ASCII字符串转成UTF8字符串;
	CHAR* ASCII2UTF8(IN LPCCH lpASCIIStr);
	BOOL  ASCII2UTF8(IN LPCCH lpASCIIStr, OUT LPCH pUTF8Str, IN CONST INT& nUTF8StrLen);
	
};

#endif // __AES_SQLITE3_20160604__;
