Nickik
Nickik

Reputation: 23

java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver

I am really new to JAVA but need to call a SQL Server function which I have been given access to.

I have built a JAVA call into a pl/sql function and am successfully calling it from one of my environments. When I move to another environment I get the error

ORA-29532: Java call terminated by uncaught Java exception: java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver

I have researched this to death and checked the correct installation of JAVA which seems fine but I'm obviously missing something. I need to somehow trace what is different on this environment, the fact that it runs in the other envionmnet proves that the class is correct so it has to be a config issue.

JAVA Class

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.net.Socket;
import java.io.IOException;

public class xxiceHJ
{
    protected static String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
    protected static String DB_URL = "jdbc:sqlserver://999.999.99.99:1433";
    protected static String USER = "xxxx";
    protected static String PWD = "xxxxx123$";

    public static String getOrderStatus (String OrderNumber) throws SQLException, Exception
    {
        Connection conn = null;
        CallableStatement cs = null;
        ResultSet rs = null;
        String Message = null;
        String WarehouseId = "01";

        try
        { 
            // Register JDBC driver
            Class.forName(JDBC_DRIVER);

            //Open a connection
            conn = DriverManager.getConnection(DB_URL, USER, PWD);

            cs = conn.prepareCall("{call usp_get_order_status(?,?,?)}"); 
            cs.setString(1, WarehouseId);
            cs.setString(2, OrderNumber);
            cs.setString(3, Message);

            rs = cs.executeQuery();

            //if prodeure return a value
            if (rs.next())
            {
                Message = rs.getString(1);
            }

            //Clean-up environment
            rs.close();
            cs.close();
            conn.close();

//        }
//        catch (SQLException se)
//        {
//            //Handle errors for JDBC
//            cfFileNumber = "SQLException" + se.toString();
//            se.printStackTrace();
//        }
//        catch (Exception e)
//        {
//            //Handle errors for Class.forName
//            cfFileNumber = "Exception" + e.toString();
//            e.printStackTrace();
        }
        finally
        {
            //finally block used to close resources
            try
            {
                if (rs!=null)
                {
                    rs.close();
                }
            }
            catch (SQLException se2)
            {
                //nothing we can do
            }
            try
            {
                if (cs!=null)
                {
                    cs.close();
                }
            }
            catch (SQLException se2)
            {
                //nothing we can do
            }
            try
            {
                if (conn!=null)
                {
                    conn.close();
                }
            }
            catch (SQLException se)
            {
                se.printStackTrace();
            }

        }
        return Message;

    }



}

Upvotes: 2

Views: 10076

Answers (2)

user5563933
user5563933

Reputation:

first Please download correct sql driver and then check your are using correct connection driver as per operating system. then once you have to test your connection if its working fine then you will go to next . so please check this url
microsift sql server driver for linux https://msdn.microsoft.com/en-us/library/hh568451(v=sql.110).aspx

my sql server driver for linux https://dev.mysql.com/downloads/connector/j/5.0.html

Upvotes: 0

Nikunj
Nikunj

Reputation: 165

The CLASSPATH variable is the search string that Java Virtual Machine (JVM) uses to locate the JDBC drivers on your computer. If the drivers are not listed in your CLASSPATH variable, you receive the following error message when you try to load the driver: java.lang.ClassNotFoundException: com/microsoft/jdbc/sqlserver/SQLServerDriver

The JDBC driver is not part of the Java SDK. If you want to use it, you must set the classpath to include the sqljdbc.jar file or the sqljdbc4.jar file. If the classpath is missing an entry for sqljdbc.jar or sqljdbc4.jar, your application will throw the common "Class not found" exception.

The sqljdbc.jar file and sqljdbc4.jar file are installed in the following location: \sqljdbc_\\sqljdbc.jar \sqljdbc_\\sqljdbc4.jar

The following is an example of the CLASSPATH statement that is used for a Windows application: CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\sqljdbc.jar
The following is an example of the CLASSPATH statement that is used for a Unix/Linux application: CLASSPATH =.:/home/usr1/mssqlserverjdbc/Driver/sqljdbc_4.0/enu/sqljdbc.jar You must make sure that the CLASSPATH statement contains only one Microsoft JDBC Driver for SQL Server, such as either sqljdbc.jar or sqljdbc4.jar.

For more information, please see:
http://support.microsoft.com/kb/313100
http://msdn.microsoft.com/en-us/library/ms378526.aspx

Upvotes: 2

Related Questions