PDA

Ver la Versión Completa : Que es un alias, y como se lo crea?


aleja
13-05-2008, 17:32:11
Hola, estoy haciendo un proyecto q vincule delphi con mysql, para ello utilizo un componente Tdatabase y me pide q coloque el alias , yo pensaba q el alias era el nombre de la base datos con la que guardaba la misma, cuando hago click en la flechita no me pone como opcion mi base de datos (ya creada en mysql administrtor), me pueden ayudar por favor??:confused:

roman
13-05-2008, 18:27:40
Para usar un TDatabase con MySQL tendrás que hacerlo por ODBC, al menos es la forma que yo conozco.

Debes bajar el driver MySQL ODBC (http://dev.mysql.com/downloads/connector/odbc/5.1.html) e instalarlo.

Luego deberás agregar un origen de datos yendo al panel de control|herramientas administrativas. En la ficha DSN de usuario oprimes el botón Agregar y buscas en la lista el driver recién instalado. Te aparecerá la ventana de configuración del driver en donde llenas los parámetros:

DataSourceName: un nombre para identificar el origen de datos, sería el alias.
Server: direccion ip del servidor
User: usuario con que te conectas al servidor
Password: contraseña del usuario
Database: base de datos a la que accedes

Una vez hecho esto, ya deberá aparecer el alias en el TDatabase.

No obstante lo anterior, te comento que usar un TDatabase es usar el BDE, que es tecnología caduca y obsoleta. Para conectar con MySQL hay mcuhas opciones, tales como ZEOS, MyDac, ADO, dbExpress. Yo comenzaría por el lado de ZEOS que es gratuito y podrás encontrar muchas referencias aquí en los foros.

// Saludos

aleja
13-05-2008, 20:18:03
Muchas Gracias!! estuve intentando con ZEOS, y cuando agrego el componente ZConnection, en la propiedad Database, voy a las carpetas donde pense que esta la base guardada C:/Archivos de programa/MySQL/MySQL Server 5.0/data/"carpeta con nombre de bd" ahí, estan las tablas, elijo una, completo el resto de los datos solicitados, y cuando quiero conectarlo me sale el siguiente error: "Incorrect DAta Base name" y me pone el camino que introduje en la propiedad Database... perdon... si es algo muuy tonto q no me doy cuenta, pero nose como continuar:(... por eso cambie a BDE. Me podrias decir q es lo que hago mal?? GRACIAS!!

roman
13-05-2008, 20:27:01
Continúa con Zeos.

El problema es que las bases de MySQL no se acceden directamente mediante el archivo en disco, sino através de una conexión. En el caso de Zeos, requieres de cinco parámetros:

protocol - el protocolo a usar; normalmente, si escoges mysql te servirá.
HostName - dirección IP del servidor de MySQL. Si estás haciendo pruebas en tu propia pc, bastará que pongas localhost
User - usuario con el que te conectas.
Password - contraseña del usuario
Database - nombre de la base. Tendrás que escribirla directamente ya que Zeos no te muestra una lista de las bases disponibles.

// Saludos

aleja
13-05-2008, 21:20:38
Ya pude conectarla!!! la verdad te agradesco muchisimo esta informacion, estuve bastante tiempo leyendo y preguntando en otros foros y nada...
estoy haciendo un programita de prueba con una base agenda con una tabla datospersonales, agrego al form 3 edits y un boton y utilizo el siguietne codigo:

zquery1.Close;
zquery1.SQL.Clear;
zquery1.SQL.Add('insert into datospersonales values (:nombre, :apellido, :direccion)');
zquery1.ParamByName('nombre').AsString:=edit1.Text;
zquery1.parambyname('apellido').AsString:=edit2.Text;
zquery1.ParamByName('direccion').AsString:=edit3.Text;
zquery1.ExecSQL;

la tabla tiene mas campos, el primer es un idpersona q lo coloco autonumerico, luego viene nombre apellido direccion, telefono, email, celular, los que no son de ingreso obligatorio, pero al correr el programita, me sale el siguietne error "Sql error Key violation. Column count doesn't match value count at row 1". Que es?

roman
13-05-2008, 21:41:14
La consulta INSERT debe indicar tantas columnas como valores se dan. Al no especificar columnas, se asume que son todas y por ello es que no coincide el número; tú sólo das valores para tres. Modifica tu consulta así:


insert into datospersonales
(idpersona, nombre, apellido, direccion)
values (0, :nombre, :apellido, :direccion)


Nota que agrego el campo idpersona, porque si no lo haces, el motor insertará un valor NULL y a la segunda inserción te marcará un key violation. Al indicar explícitamente 0 como valor del campo, el motor sabe que deseas poner ahí el valor autonumérico que corresponda.

// Saludos

aleja
13-05-2008, 21:52:28
Mil Gracias!!! mañana sigo... hoy ya se me hizo tarde, de verdad te lo agradezco de corazob, hoy avance muchisimo!!!:)