Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
No puedo conectar BD con MySQLDAC

Hola amigos, estoy probando DAC para MySQL y lo primero que he tenido que hacer es instalar MySQL y ya eso se me ha hecho cuesta arriba porque me daba errores al instalarse y lo he tenido que instalar tres veces.
Una vez instalado mysql he instalado MySQLDAC y para probarlo añado un TmySQLDatabase y le pongo el UserName, UserPassword, Host, DatabaseName y cuando intento poner a true la propiedad Connected me tira un error. Asi está el componente configurado:

Código:
  object mySQLDatabase1: TmySQLDatabase
    DatabaseName = 'dbdemos'
    UserName = 'root'
    UserPassword = '45659345'
    Host = 'localhost'
    ConnectOptions = [coCompress]
    Params.Strings = (
      'Port=3306'
      'TIMEOUT=30'
      'DatabaseName=dbdemos'
      'Host=localhost'
      'PWD=45659345'
      'UID=root')
    DatasetOptions = []
    Left = 112
    Top = 64
  end
Y este es el error:
Cita:
Error: 1049 SQLSTATE: 42000 (ER_BAD_DB_ERROR) Message: Unknown database 'dbdemos'
O sea que no encuentra la base de datos y estoy usando la que viene con los demos del mismo componente y la tengo en el mismo directorio donde tengo el proyecto actual. ¿que hago mal?
Responder Con Cita
  #2  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Se me olvidó decir que al reiniciar el pc siempre me suelta dos mensajes el MySQL Notifier:
Primer mensaje:
Cita:
High Severity Error
Cannot open Service Control Manager on computer 'localhost'. This operation might require other privileges.
Segundo mensaje:
Cita:
High Severity Error
Object reference not set to an instance of an object.
Soy administrador asi que no se a que se refiere con que requiere otros privilegios.
Responder Con Cita
  #3  
Antiguo 07-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sé, algo me suena extraño aquí. dbdemos se parece más a la base de datos que viene de ejemplo con el BDE Paradox y, por otro lado, a diferencia de Paradox, las bases de datos en MySQL no se colocan físicamente en un directorio de la aplicación si no que todas viven en un directorio del servidor y los clientes no tienen acceso directo a ellas. Aún suponiendo que la base dbdemos es, como dices, un ejemplo de MySqlDac, raramente se instalan copiando directamente el archivo o archivos físicos. Más bien consisten en scripts con las sentencias CREATE, INSERT y UPDATE que debes ejecutar para recrear la base,

// Saludos
Responder Con Cita
  #4  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Yo antes usaba SQLite y simplemente ponia la base de datos al lado del ejecutable y la dll y podia hacer lo que quisiera con ella conectandome a ella sin problemas.
Ahora quiero ver MySQL pero no tengo ni idea. ¿quieres decir que MySQL tiene que estar obligatoriamente en un servidor de internet? ¿No sirve para gestionar una base de datos que tengas en el mismo pc?
Responder Con Cita
  #5  
Antiguo 07-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sí que puedes. Pero aún estando instalada en tu propia pc, sigue siendo un servidor. De todas formas, y para no desviarte más, en tu mensaje original se ve que tu servidor está bien instalado y tienes acceso a él, es decir, puedes conectarte sin problemas. El error es simplemente que no existe esa base de datos en el servidor local.

Intenta conectarte sin especificar la base de datos (el parámetro DatabaseName) y manda una consulta como esta:

Código SQL [-]
show databases;

Eso debería devolverte la lista de las bases de datos que hay instaladas en tu servidor local.

// Saludos
Responder Con Cita
  #6  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
¿Donde pongo eso? en la consola me dice que no existe ese comando.
¿Donde se supone que está mi servidor local para poner ahi mi base de datos y que la encuentre?
Responder Con Cita
  #7  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
vale, despues de hacer varias pruebas he conseguido que me muestre lo que indicas:

Cita:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| test |
| world |
+--------------------+

6 rows in set (0.34 sec)
¿Donde se supone que estan esas bases de datos?
Responder Con Cita
  #8  
Antiguo 07-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Abre una ventana de comandos (cmd.exe) y ejecuta:

Código:
C:> mysql -uroot -p
Si no puedes, entonces debes poner la ruta de mysql en el PATH. Una vez que tengas acceso al prompt de mysql:

Código:
mysql>
ahí escribes la consulta que te puse.

// Saludos
Responder Con Cita
  #9  
Antiguo 07-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ja, ja. Terminé de escribir después de tu nuevo mensaje.

Pues ahí es donde ves claramente que no hay una base dbdemos instalada.

Puedes usar herramientas como phpMyAdmin (web) o MySQL Workbench (propia de mysql y gratuita) para crear tus bases y tablas.

Por cierto, las tres primeras bases que te muestra, no las toques. sakila y world seguramente sí son demos y test está vacía y puedes jugar ahí.

Para ver qué tablas tiene una base, ejecuta la consulta

Código:
show tables;
asegurándote antes de tener la base deseada seleccionada.

// Saludos
Responder Con Cita
  #10  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
De momento hasta saber como trabajar con la BD que deseo estoy investigando un poco con una de las que aparece en la lista pero solo para hacer consultas. Tengo esto para hacer una consulta:
Código PHP:
if(EditName->Text.IsEmpty() && !EditId->Text.IsEmpty())
      
mySQLQuery1->SQL->Add(AnsiString().sprintf("SELECT * FROM actor WHERE actor_id LIKE '%%%s%'",EditId->Text));
   else if(
EditId->Text.IsEmpty() && !EditName->Text.IsEmpty())
      
mySQLQuery1->SQL->Add(AnsiString().sprintf("SELECT * FROM actor WHERE first_name LIKE '%%%s%%'",EditName->Text));
   else if(!
EditName->Text.IsEmpty() && !EditId->Text.IsEmpty())
      
mySQLQuery1->SQL->Add(AnsiString().sprintf("SELECT * FROM actor WHERE actor_id LIKE '%%%s%' AND first_name LIKE '%%%s%%'",EditId->Text,EditName->Text)); 
Se supone que si no hay nada escrito en el Edit del nombre pero si hay algo en el del Id busca por el id, si es al contrario busca por el nombre, y si hay algo escrito en ambos busca por ambos. En el tercero me falla ya que solo me da coincidencias correctas con el id pero no por el nombre. O sea que si fuese id=22334 y nombre=peter, si en el edit del nombre pongo "c" y en el del id pongo "22" me lo mostrará aunque la "c" no aparece en peter ¿como seria eso para que funcione correctamente?

Última edición por aguml fecha: 07-10-2015 a las 22:33:28.
Responder Con Cita
  #11  
Antiguo 07-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Vale, ya me di cuenta de mi error. Me había comido algunos signos de porcentaje.
Ahora otra cosa más. La idea es que en la consulta me salgan los resultados que se adecuan a esos parámetros de la consulta y que al hacer clic en uno de ellos se rellenen los tedits con los valores de las celdas de esa fila. Uso un dbgrid ¿alguien sabe como hacer eso? Lo he hecho pero con listboxs y esto es diferente y no veo como hacerlo. Lo único que tengo hasta ahora es que el dbgrid lo he puesto de solo lectura, que no pueda editar, y que seleccione la fila seleccionada.
Y otra cosa. La idea es que si tengo por ejemplo 20 caramelos en la base de datos y yo elijo esa línea e indico en un tedit que cojo 5 pues esos 5 se resten. ¿eso se puede hacer desde la mysqlquery o tengo que usar un mysqltable? ¿como seria eso? Hay un componente mysqlupdate ¿es para eso?

Última edición por aguml fecha: 07-10-2015 a las 23:43:20.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No puedo conectar php con mysql Ken_Masters PHP 6 05-01-2009 18:23:00
no me puedo conectar con el BDE fedelphi Conexión con bases de datos 1 16-11-2006 22:56:02
No puedo conectar en internet elcigarra MySQL 3 06-08-2006 15:55:17
no puedo conectar a mysql acertij022 MySQL 3 02-12-2004 14:44:48
no puedo conectar en red sercornejov Firebird e Interbase 1 01-12-2004 20:12:19


La franja horaria es GMT +2. Ahora son las 19:44:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi