Mega Code Archive

 
Categories / Delphi / ADO Database
 

MySQL

Title: mySQL Question: How can we register alias Odbc dinamically for mysql ? Answer: we connect to mysql by the myODBC. It's possible that driver myOdbc of mysql it aren't installed. the driver name for connect mysql across to odbc begin for "mysql". //******************************************************************* // Funcition EXISTS DRIVER ODBC // Fecha: 12-07-04 // Descripcin: if exist the odbc driver installed // // // Parametros de Entrada : Name Driver, (e.g.: mysql) // Parametros de Salida : dll driver, driver name compelte // Devuelve : True or False //******************************************************************* function ExistsDriverODBC(driver: string; var DriverDll, NombreDriver:string): boolean; var Registro: TRegistry; ExisteRegistro, Encuentro: boolean; ListDrivers: TStrings; i, PosDriver: Integer; begin //Abrimos el Registro para Buscar el Driver especifico Registro:=TRegistry.Create; Registro.RootKey:=HKEY_LOCAL_MACHINE; ExisteRegistro:=Registro.OpenKey('SOFTWARE\ODBC\ODBCINST.INI\ODBC DRIVERS',False); Encuentro:=false; if ExisteRegistro then begin //Recogemos toda la Lista de Drivers ODBC disponibles en la mquina actual ListDrivers:=TStringList.Create; Registro.GetValueNames(ListDrivers); //Comprobar que exista el Driver Pasado Como Parametro i:=0; while (i begin if UPPERCASE(Copy(ListDrivers.Strings[i],0,length(driver)))=UPPERCASE(driver) then begin Encuentro:=true; posDriver:=i; end; i:=i+1; end; end; if Encuentro then begin Registro.CloseKey; DriverDll:=''; Registro.OpenKey('SOFTWARE\ODBC\ODBCINST.INI\'+ListDrivers.Strings[posDriver],False); DriverDll:=Registro.ReadString('Driver'); NombreDriver:=ListDrivers.Strings[posDriver]; end; Registro.Free; result:=Encuentro; end; Once we have verified that driver this installed we verified that the alias is created. The following function verifies that is installed, if it isn`t installed it creates and if it is created it modifies according to parameters. //******************************************************************* // Funcin EXISTS ALIAS MYSQL // Fecha: 12-07-04 // Descripcin: verifies if exists mysql alias. // // // Parametros de Entrada : alias name, server, database name, user, // dll driver (obtain acrros to ExistsDriverOdbc) // Parametros de Salida : // Devuelve : true or false //******************************************************************* function ExistsAliasMySQL(Alias, Server, bd, User, Driver, NombreDriver:string): boolean; var Registro: TRegistry; ExisteRegistro, Encuentro: boolean; ListDrivers: TStrings; i, PosDriver: Integer; begin //Abrimos el Registro para Buscar el Driver especifico Registro:=TRegistry.Create; Registro.RootKey:=HKEY_LOCAL_MACHINE; ExisteRegistro:=Registro.OpenKey('SOFTWARE\ODBC\ODBC.INI\'+Alias,False); if not ExisteRegistro then begin result:=false; Registro.OpenKey('SOFTWARE\ODBC\ODBC.INI',False); Registro.CreateKey(Alias); Registro.OpenKey(Alias,False); Registro.WriteString('database','test'); Registro.WriteString('description',nombredriver); Registro.WriteString('Driver',driver); Registro.WriteInteger('option',3); Registro.WriteString('password',''); Registro.WriteInteger('port',3306); Registro.WriteString('Server',server); Registro.WriteString('stmt',''); Registro.WriteString('user',user); Registro.CloseKey; Registro.OpenKey('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources',False); Registro.WriteString(Alias,nombreDriver); Registro.CloseKey; end else begin result:=true; //Si Existe el Registro, Cambiamos los parametros //con los del archivo config.ini Registro.OpenKey('SOFTWARE\ODBC\ODBC.INI',False); Registro.OpenKey(Alias,False); Registro.WriteString('Server',server); Registro.WriteString('database',bd); Registro.WriteString('user',user); Registro.CloseKey; end; Registro.Free; end; I'm sorry for my english. Thanks.