En unos datos un poquito más técnicos:
- Me conecté a través de ODBC, la información más importante está aquí.
- El driver pueden descargarlo de aquí. Al crear su cuenta en el listado de plataformas elijan: Linux-x86- (32-Bit). Entonces debe aparecer un solo enlace, con ReleaseDate = 17 Aug 2007. Ese es el que hay que descargar.
- El manual de instalación y configuración está aquí.
Es muy importante tomar en cuanta todos los puntos del manual. Los más importantes considero que son:
- Hay que elegir instalar el unixODBC en el proceso de configuración.
- Las variables de entorno que se necesitan para que funcione el driver. La unica que no está bien especificada es la de ORACLE_HOME, que debe ser:
export ORACLE_HOME = /usr/lib/oracle/xe/app/oracle/product/10.2.0/server - Se debe contar con el driver QODBC3 de Qt3. Para asegurarse que existe se puede revisar en el asistente de conexión a Bases de Datos que trae Qt3; QODBC3 deberá aparecer en el listado de controladores. Si no es así descargarlo con tu gestor de paquetes.
- El nombre de la base de datos en el SqlString debe ser ORACLE (debido a la forma de configuración del driver).
- El código de conexión:
QSqlDatabase *miData = QSqlDatabase::addDatabase("QODBC3");
miData->setDatabaseName("ORACLE");
miData->setUserName("miEsquema");
miData->setPassword("miPwl");
miData->setHostName("localhost"); - La generación del Makefile (estando en la carpeta del proyecto):
qmake "INCLUDEPATH+=/usr/local/easysoft/unixODBC/include" "LIBS+=-L/usr/local/easysoft/unixODBC/lib -lodbc" -o Makefile nombreProyecto.pro
Ojo que entre el primer parametro entre comillas y el segundo, debe haber un espacio de lo contrario compilara bien pero mostrar error en la conexión.
Y luego el conocido:
make
Hay que hacerlo con paciencia porque si se omite algún detalle, no va a funcionar.
A SEGUIR ADELANTE
32 comentarios:
vos mira una pregunta:
en el enlace aparecen versiones como:
10.1
10.2
11.1
cual de todas debo bajar?
para poder conectarme
Si te referias el driver, ya edite el post con las especificaciones de cual tenes que descargar.
vieras que cuando hago lo de:
cd /usr/lib/instantclient_10_2
./sqlplus username/password@//machine_name:port/database_name
me dice
fallo de segmentacion
no se a que se debe esto.
Lo que tenes que hacer agrear al /usr/lib/ el directorio donde istalaste el cliente, en mi caso quedaría:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin/
Luego allí ejecuta el sqlplus:
./sqlplus
En UserName escribi:
Enter user-name: nombreUsuario@localhost
Y luego te va a pedir tu password
Enter password: tuPasswd
Allí tendría que hacer la conexión.
Ala tu, gracias por la ayuda!!!!;)
Una duda.... el drive que propones para descargar es el: Linux-x86- (32-Bit) pero mi compu es de 64, sera que no da clavo????? o sera necesario otro drive?????
Alli en el listado de plataformas aparece la de 64 bits para linux, así se acopla a tu cpu ;)
Fíjate que a mi también me da el error “Fallo de segmentación (core dumped)” cuando ingreso:
cd /usr/lib/instantclient_10_2
./sqlplus username/password@//machine_name: port/database
Lo que no entiendo es eso de que tengo que agregar al /usr/lib/ el directorio donde instalaste el cliente, por que a mi no me aparece la carpeta client en la dirección '/usr/lib/oracle/xe/app/oracle/product/10.2.0'
¿Que puedo hacer?
Lo que podes hacer es utilizar el buscador de archivos para encontrar donde se instalo el cliente de oracle en tu equipo. Te podes basar buscando el archivo 'sqlplus', o simplemente la carpeta 'XE' que dentro de ella debería estar el Server y el Client de Oracle. Cualquier cosa me comentas.
cuando ejecuto este comando
./isql -v ORACLE
me da el siguiente error:
[08001][unixODBC][Easysoft][Oracle]ORA-12154: TNS:could not resolve the connect identifier specified
[ISQL]ERROR: Could not SQLConnect
ya revise las variables de entorno, todas las declare como el manual indica y revise que todo este correcto.
¿que puede ser la causa de este error?
Si pudieras colocar aquí el contenido del archivo: /etc/odbc.ini para ver que datos está utilizando para conectarse. Es lo que podría estar causando el error.
este es el contenido del archivo /etc/odbc.ini
[ORACLE]
Driver = ORACLE
Database = ORACLE
User = administrador
Password = admin
METADATA_ID = 0
ENABLE_USER_CATALOG = 1
ENABLE_SYNONYMS = 1
El valor de Database debería ser:
Database = XE
Que es el nombre de la base de datos Oracle.
vos, fijat q yo todavia ando trabado en donde hay q ejecutar el sqlplus para ver si todo anda bien:
./sqlplus username/password@//machine_name: port/database
me sale este error:
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
vos mencionaste q hay q poner en user-name: nombreUsuario@localhost, pero ese usuario es el q creas en oracle verdad? o hay q crear un cliente o algo parecido? no sabes como puedo solucionar ese error?
Exactamente. El usuario y password con el que tenés que ingresar es alguno que hayas creado en Oracle.
Tambien podes conectarte con el default: 'sys' o 'system' y el password de estos es el que configuraste en el proceso de instalación.
Ahora, el error que te está dando suele suceder porque no se ha iniciado el listener de Oracle. Esto puede suceder porque durante el proceso de configuración especificaste que no se iniciara junto con el sistema operativo.
Para solucionarlo tenés que irte a una de las opciones que instal Oracle y seleccionar: 'Iniciar Base de datos'.
Para que inicie junto con tu sistema tendrías que investigar como se hace de acuerdo a la distribución de Linux que usas.
gracias, ya me funciono lo que te habia dicho.
ahora bien tengo un nuevo problema, fijate que ya cuento con el Driver QODBC3 de Qt3, pero cuando intento hacer la conexion con el asistente de conexión a Bases de Datos que trae Qt3 me da error, en los campos escribo esto:
Name: conexion1
driver: QODBC3
Database Name: ORACLE
Username: administrador
password: admin
hostname: localhost
port: (default)
ya intentente colocando en port: (default),8080,1521. Y lo mismo no puede hacer la conexion,tambien ya me segure que el servicio de oracle este corriendo. el Error que me da es el siguiente:
Could not connect to the database.
Please ensure that the database server is running and that all the connection information is correct.
[QODBC3: Unable to connect]
¿que podra ser? ya lo intente hacer a nivel de codigo, y los resultados son los mismos.
A nivel del asistente no te va a funcionar, ya que las librerías se incluyen con los parámetros que colocas al qmake. Asegurate de estar incluyendo con el qmake los parámetros indicados en el post.
Si ya entraste a la consola del SQL mediante ./isql -v ORACLE entonces el driver ODBC está bien instaldo, el problema podría ser en el código o como te digo en los parámetros del qmake. Cualquier cosa me contas.
pues fijate que si ya pude entrar a la consola, el qamke lo hago tal y como lo posteaste. es mas este codigo:
QSqlDatabase *db = QSqlDatabase::addDatabase ("QODBC3");
db->setDatabaseName ("ORACLE");
db->setUserName ("administrador");
db->setPassword ("admin");
db->setHostName ("localhost")
me funciona,en el puntero *db, si la conexion fue exitosa db!=NULL, tambien tiene dos metodos open y openError, estos metodos indican si la conexion fue exitosa. En mi caso la conexion es exitosa, Bueno el problema esta cuando hago un select, lo hago de esta forma
QSqlQuery Consulta( "SELECT * FROM SECCION;", db);
pues Consulta no tiene nada, ningun dato , la tabla SECCION existe, y tiene registros, pero no retorna nada.
Yo ya lo probe hacer con la conexion con mysql, y me funcionan, Pero con la conexion en oracle no. Cuando en oracle (ya sea en el SQL plus, o en el entorno grafico de oracle) hago el select, funciona como debe de ser. Pero en el codigo de Qt no. ¿tenes idea por que puede ser?
Este es el código que tiene mi botón conexión, con el que me muestra en la consola el resultado del select:
CodigoFuente
Cualquier cosa me comentas.
vos fijate que hice lo que dice el manual
unzip instantclient-basic-linux32-10.2.0.2-20060331.zip -d /usr/lib
unzip instantclient-sqlplus-linux32-10.2.0.2-20060331.zip -d /usr/lib
luego
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/usr/lib/instantclient_10_2
export LD_LIBRARY_PATH
y a la hora de hacer
cd /usr/lib/instantclient_10_2
./sqlplus System/tato@//localhost:8080/System
me tira: VIOLACION DE SEGMENTO, a que se debe ese error si lo estoy haciendo exactamente como esta en la pagina de instalacion?????
hechame una mano, orale
q onda vos Efrain. Vos fijat q yo solo pude arreglar esa onda asi: En lugar d utilizar los .zip para la instalacion, baja los .rpm, y despues los instalas con eso d una vez.
Lo que tenes que hacer es instalar el cliente de Oracle y a continuación dirigirte a la carpeta bin del cliente (en mi caso esta en: /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin/) y alli ejecutas el 'sqlplus'. En nombre de usuario escribi: usuario@localhost y en el pass el pass correspondiente a 'usuario' en oracle. Cualquier cosa alli comentas.
Saludos, fijate que tengo un problema, yo creo que instale bien el driver de unixODBC, pero ahora que ya compile el programa de qt, con las instrucciones que aparecen en tu foro, y ejecuto la accion de conectar , me aparece que no tengo instalado QODBC3 y si lo tengo instalado, y qt esta direccionado a la carpeta qt3, sera problema de la instalacion de unixODBC o de qt, de antemano gracias
q tal idesys.
vieras q al compilar y hacer el qmake, funciona bien o almenos eso parece pq no saca ningun error y genera el archivo makefile, sin embargo cuando luego le doy make me dice q el error es que no ecuentra al archivo para cargarlo, algo asi como esto:
[.obj/make]
no se que pasara, no se si me ayudas en esto.
Gracir por tu respuesta
saludos, fijate que el herror correcto que me da es el siguiente:
QSqlDatabase: QODBC3 driver not loaded
QSqlDatabase: available drivers: QODBC3
y el driver QODBC3 si lo tengo instalado, ya que me lo muestra en el wizard de QT, gracias de antemano
@Jeff: Verifica que haya un espacio entre los 2 parametros que le envias al qmake, me refiero a los 2 strings.
@Centinela: Verifica que tengas todos los paquetes de qt3 instaldos, lo podes hacer en tu gestor de paquetes de tu distribucion.
Cualquier cosa me comentan.
he instalado todos los paquetes referentes a qt3, pero fijate q el error q me da es este:
ringedia@ringedia-laptop:~$ make
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/local/easysoft/unixODBC/include -I/usr/include/qt3 -I.ui/ -I. -I.moc/ -o .obj/form1.o .ui/form1.cpp
make: g++: No se encontró el programa
make: *** [.obj/form1.o] Error 127
Por lo que se ve, el error no es del driver sino algún problema con el código. La única forma en que podría ayudarte sería viendo el código de tu programa.
Vos gracias.
vieras q me daba el error por no haber configurado bien los paquetes.
Ojo si alguien tiene l mismo problema. primero en su administrador de paquetes verifique tener todos los paquetes referentes a QT3 y a g++.
si es desde consola que los instalas asegurate de darle:
sudo apt-get -f install
o
sudo apt-get check
o la mejor opcion seria
dpkg --configure -a
y listo adios a los problemas
Saludos
Gracias por tu aporte centinela.
Publicar un comentario