
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();
}
}