कोडClass.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
फेंक नहीं सकताClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver
क्योंकि नाम अलग हैं। क्या यह संभव है कि आपने इसे अपने कोड में गलत तरीके से सेट किया हो?
मैंने उनकी वेबसाइट से sqljdbc41.jar डाउनलोड किया और देखा कि कक्षा का सही नाम com.microsoft.sqlserver.jdbc.SQLServerDriver
है। ।
$ jar tf sqljdbc41.jar | grep SQLServerDriver.class
com/microsoft/sqlserver/jdbc/SQLServerDriver.class
मुझे अभी-अभी Microsoft के वेब दस्तावेज़ों पर दोनों नाम मिले हैं, इसलिए या तो उन्होंने किसी समय इस वर्ग का नाम बदल दिया (इसका पैकेज बदल दिया), या उनके कुछ दस्तावेज़ों में त्रुटियाँ हैं।
आपको बस इतना करना है कि .jar को टॉमकैट की lib निर्देशिका में छोड़ दें (उदा.apache-tomcat-7.0.67\lib
), और टॉमकैट को पुनरारंभ करें।
यदि आपके पास सही वर्ग का नाम है, और lib निर्देशिका में सही जार है, और अभी भी उस त्रुटि को देख रहे हैं, तो मुझे आश्चर्य है कि आपके ग्रहण सेटअप में किसी प्रकार का टाइपो है, और ग्रहण से तैनाती किसी भी तरह से लोड करने का प्रयास कर रही है खंडित वर्ग का नाम। (मैं एक्लिप्स का उपयोग नहीं करता, और मुझे वहां से तैनाती के बारे में पता नहीं है)।
एक बहुत ही सरल एप्लिकेशन बनाने का प्रयास करें (और एमएस ड्राइवर वर्ग के बारे में ग्रहण न बताएं):
@WebServlet("/")
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Set response content type
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>" + "Welcome to the servlet!" + "</h1>");
try {
String server = "localhost";
String database = "testDB";
String password = "sapassword";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
Connection con = (Connection) DriverManager.getConnection(connectionUrl);
} catch (ClassNotFoundException e) {
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} catch (SQLException e){
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} finally {
out.println("<h1>" + "That's the end of the servlet!" + "</h1>");
}
}
}
और इसे चला रहे हैं। यदि आप आउटपुट देखते हैं जैसे:
Welcome to the servlet!
SQLServerException_The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
That's the end of the servlet!
इसका मतलब है कि ड्राइवर ने ठीक से लोड किया। कनेक्शन विफल रहा b/c मेरे पास परीक्षण करने के लिए वर्तमान में SQLServer इंस्टेंस नहीं चल रहा है।