#include <System.Classes.hpp>
#include <IniFiles.hpp>
#include <iostream>
using namespace std;
class MySQLConfig
{
private:
TIniFile* iniFile;
AnsiString ServerName;
AnsiString UserName;
AnsiString Password;
AnsiString DatabaseName;
public:
// 構造函數
MySQLConfig(const AnsiString& iniFilePath)
{
iniFile = new TIniFile(iniFilePath);
}
// 析構函數
~MySQLConfig()
{
delete iniFile;
}
// 設置數據庫配置參數
void SetConfig(const AnsiString& ServerName, const AnsiString& UserName, const AnsiString& Password, const AnsiString& DatabaseName)
{
iniFile->WriteString("MySQL", "ServerName", ServerName);
iniFile->WriteString("MySQL", "UserName", UserName);
iniFile->WriteString("MySQL", "Password", Password);
iniFile->WriteString("MySQL", "DatabaseName", DatabaseName);
}
// 獲取數據庫配置參數
AnsiString GetServerName() const
{
return iniFile->ReadString("MySQL", "ServerName", "");
}
AnsiString GetUserName() const
{
return iniFile->ReadString("MySQL", "UserName", "");
}
AnsiString GetPassword() const
{
return iniFile->ReadString("MySQL", "Password", "");
}
AnsiString GetDatabaseName() const
{
return iniFile->ReadString("MySQL", "DatabaseName", "");
}
// 連接數據庫
bool Connect()
{
// 初始化 MySQL 連接句柄
MYSQL* conn = mysql_init(NULL);
// 設置連接參數
if (mysql_real_connect(conn, GetServerName().c_str(), GetUserName().c_str(), GetPassword().c_str(), GetDatabaseName().c_str(), 0, NULL, 0) == NULL)
{
cout << "連接數據庫失敗: " << mysql_error(conn) << endl;
mysql_close(conn);
return false;
}
return true;
}
// 關閉數據庫連接
void Close()
{
if (mysql_close(mysql_conn) != 0)
{
cout << "關閉數據庫連接失敗: " << mysql_error(mysql_conn) << endl;
}
}
};
int main()
{
MySQLConfig config("my.ini");
// 設置數據庫配置參數
config.SetConfig("localhost", "root", "password", "my_database");
// 連接數據庫
if (config.Connect())
{
cout << "連接數據庫成功" << endl;
}
else
{
cout << "連接數據庫失敗" << endl;
return 1;
}
// 執行數據庫操作
// 關閉數據庫連接
config.Close();
return 0;
}