我真的是JAVA的新手,但需要調用一個SQL Server的功能,我已被授予訪問權限。java.lang.ClassNotFoundException:com/microsoft/sqlserver/jdbc/SQLServerDriver
我已經建立了一個JAVA調用到一個PL/SQL函數,併成功地從我的一個環境調用它。當我移動到另一個環境我得到的錯誤
ORA-29532:Java調用被未捕獲的Java異常終止:拋出java.lang.ClassNotFoundException:COM /微軟/ SQLSERVER/JDBC/SQLServerDriver
我研究這死亡和檢查正確的安裝JAVA這似乎很好,但我顯然缺少的東西。我需要以某種方式跟蹤這個環境的不同之處,它在另一個envionmnet中運行的事實證明這個類是正確的,所以它必須是一個配置問題。
Java類
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;
}
}
您是否附有SQLSERVER庫? – Vyacheslav
sqlserver函數是在外部開發的,函數發佈給我。我需要sqlserver庫嗎? – Nickik
是的,您需要在應用程序的類路徑上安裝SQL Server JDBC驅動程序。使用最新版本的驅動程序(假設您使用Java 6或更高版本),不需要使用'Class.forName'加載驅動程序。 –