
Ich versuche zu einer Oracle-Datenbank über ODBC zu verbinden, bekomme aber immer folgende Fehlermeldung (mit Qt sowie JDBC ODBC):
Obwohl der Eintrag in der (automatisch erstellten) Datei tnsnames.ora enthalten ist:TNS: Listener hat SERVICE_NAME in CONNECT_DATA nicht erhalten.
Code: Alles auswählen
# TNSNAMES.ORA Network Configuration File: C:\oracle\ODS11GR1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
RPROODS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = WINXP)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = rproods)
    )
  )
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )Code: Alles auswählen
C:\Dokumente und Einstellungen\daniel>tnsping rproods
TNS Ping Utility for 32-bit Windows: Version 11.1.0.7.0 - Production on 02-SEP-2
011 17:24:52
Copyright (c) 1997, 2008, Oracle.  All rights reserved.
Used parameter files:
C:\Oracle\ODS11gr1\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = WINXP)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = rproods)))
OK (30 msec)Code: Alles auswählen
    QSqlDatabase db = QSqlDatabase::addDatabase( "QODBC" );
    db.setDatabaseName( "RPROODS" );
    db.setUserName( "reportuser" );
    db.setPassword( "report" );
    if( !db.open() )
    {
        QMessageBox::critical( NULL,
                               QObject::tr( "Error" ),
                               QObject::tr( "Error connecting to database: %1" ).arg( db.lastError().text() ) );
        return 1;
    }Code: Alles auswählen
import java.sql.*;
public class DbTest {
    public static void main(String args[]) throws SQLException, ClassNotFoundException {
        Connection conn;
        Statement stmt;
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        conn = DriverManager.getConnection("jdbc:odbc:rproods");
        System.out.println(conn.getMetaData().getDriverName());
        System.out.println(conn.isValid(500));
        stmt = conn.createStatement();
    }
}