4
votes

I have tried connecting to teredata DB through JDBC. I am using the jars 'terajdbc4.jar' and 'tdgssconfig.jar', but I am getting a ClassNotFoundException and NoClassDefFoundError for something kind of com.ncr.teradata.jtdgss.TdgssManager is not found.

Please help me to find a solution. I have provided my code snippet followed by the error log. The user name and passwords are correct as connect to the teradata DB through UNIX using that ID.

public class HelloTeradataJDBC {


  public static void main(String[] args) throws Exception {

    String url="jdbc:teradata://10.10.***.**/DBS_PORT= 1025/DATABASE= ******/TMODE=ANSI,CHARSET=UTF8";

    try{
    Class.forName("com.ncr.teradata.TeraDriver");
    Connection conn=DriverManager.getConnection(url, "*****", "******");
    //Connection conn=DriverManager.getConnection(connurl, "javauser1", "password1");

    String query="select * from xi.san_emp";


    PreparedStatement stmt=conn.prepareStatement(query);
    ResultSet rs=stmt.executeQuery();
    while(rs.next()) {
        String col1=rs.getString(1);
        System.out.println("col1="+col1);
    }
    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }
  }
}

Error:

Exception in thread "main" java.lang.NoClassDefFoundError: com/ncr/teradata/jtdgss/TdgssManager
    at com.ncr.teradata.TeraEncrypt.getTDgssVersion(TeraEncrypt.java:548)
    at com.ncr.teradata.jdbc_4.parcel.ConfigFeatureTdgss.<init>(ConfigFeatureTdgss.java:44)
    at com.ncr.teradata.jdbc_4.statemachine.InitDBConfigState.action(InitDBConfigState.java:68)
    at com.ncr.teradata.jdbc_4.statemachine.LogonController.run(LogonController.java:50)
    at com.ncr.teradata.jdbc_4.TDSession.<init>(TDSession.java:150)
    at com.ncr.teradata.jdbc_3.ifjdbc_4.TeraLocalConnection.<init>(TeraLocalConnection.java:89)
    at com.ncr.teradata.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:50)
    at com.ncr.teradata.TeraDriver.connect(TeraDriver.java:214)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at HelloTeradataJDBC.main(HelloTeradataJDBC.java:15)
Caused by: java.lang.ClassNotFoundException: com.ncr.teradata.jtdgss.TdgssManager
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 11 more
1

1 Answers

2
votes

This will work. THe Driver name is com.teradata.jdbc.TeraDriver instead of com.ncr.teradata.TeraDriver which I believe is dated.

Class.forName("com.teradata.jdbc.TeraDriver");
conn = DriverManager.getConnection("jdbc:teradata://"+servername+"/databasename="+this.username+",user="+this.username+",password="+this.password);