#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;
}