用QT动态创建ODBC MySQL DSN数据源的步骤如下:
1、在注册表中\HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources中创建数据源名称,字符串值设置为MySQL ODBC驱动的名称,比如TestMySQL-->"MySQL ODBC 8.0 ANSI Driver",如下图:
2、在\HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\中创建名为TestMySQL项,在项中新建如下图的字符串值:
主要创建动态DSN的源代码如下:
QSettings *regDataSrc=new QSettings("HKEY_CURRENT_USER\\SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources", QSettings::NativeFormat);
regDataSrc->setValue(ui->lEditDSN_Name->text(), "MySQL ODBC 8.0 ANSI Driver");//创建数据源
delete regDataSrc;
regDataSrc = nullptr;
//配置MySQL DSN
QString Key= QString("HKEY_CURRENT_USER\\SOFTWARE\\ODBC\\ODBC.INI\\%1").arg(ui->lEditDSN_Name->text());
qDebug()<<Key;
QSettings *regConfigDSN=new QSettings(Key, QSettings::NativeFormat);
regConfigDSN->setValue(".", "");
regConfigDSN->setValue("DESCRIPTION", ui->lEditDSN_Description->text());//写描述项
QSettings *regMySQLDriverPath = new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\ODBC\\ODBCINST.INI\\MySQL ODBC 8.0 ANSI Driver", QSettings::NativeFormat);
QString MySQLDrvPath = regMySQLDriverPath->value("Driver").toString();
regConfigDSN->setValue("Driver", MySQLDrvPath/*"D:\\Program Files\\MySQL\\Connector ODBC 8.0\\myodbc8a.dll"*/);//MySQL驱动程序路径
regConfigDSN->setValue("SERVER", ui->lEdit_MySQL_IP->text());//MySQL服务器地址
regConfigDSN->setValue("PORT", ui->lEdit_MySQL_Port->text());//MySQL服务器端口号
regConfigDSN->setValue("UID", ui->lEdit_MySQL_UID->text());//用户名
regConfigDSN->setValue("PWD", ui->lEdit_MySQ_PWD->text());//密码
delete regConfigDSN;
regConfigDSN = nullptr;
delete regMySQLDriverPath;
regMySQLDriverPath = nullptr;