• 0
h.shehari

Access to MySQL using Java Servlet?

سؤال

السلام عليكم

أولا لم اعرف في قسم اضع هذا السؤال (جافا او XML او MySQL)، فارجو نقله للقسم المناسب

المشكلة عندي اني احاول بناء تطبيق ويب يعتمد على ال Servlet ولكن لم اتمكن من الوصول الى قاعدة البيانات MySQL
 

  • اسم قاعدة البيانات test
  • اسم الجدول test
  • قمت باضافة ال Connector الخاص ب MySQL الى ال Libraries
  • استخدم JDK 1.7, NetBeans 7.3, MySQL 5.6, Tomcat 7.0, Connector/J 5.1.24

1- ال form action في صفحة الانترنت sign_up.jsp

<form action="RegisterUser" method="post">    <td><input type="submit" value="Submit"></td></form>

 

2- ملف السيرفلت RegisterUser.java

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.mysql.jdbc.Driver;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.util.logging.Level;import java.util.logging.Logger;@WebServlet(urlPatterns = {"/RegisterUser"})public class RegisterUser extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException, SQLException {    try{        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");        Statement s = (Statement) con.createStatement();        String name = "Hassan3";        int phone = 123456;        String insert = "INSERT INTO test VALUES ('\" + name + \"', \" + phone + \")";        s.executeUpdate(insert);        s.close();        con.close();    }catch(Exception e){        throw new SecurityException("Class not found " + e.toString());    }}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {    try {        processRequest(request, response);    } catch (SQLException ex) {        Logger.getLogger(RegisterUser.class.getName()).log(Level.SEVERE, null, ex);    }}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {    try {        processRequest(request, response);    } catch (SQLException ex) {        Logger.getLogger(RegisterUser.class.getName()).log(Level.SEVERE, null, ex);    }}@Overridepublic String getServletInfo() {    return "Short description";}// </editor-fold>

 

3- نتيجة الexception

HTTP Status 500 - Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/testtype Exception reportmessage Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/testdescription The server encountered an internal error that prevented it from fulfilling this request.exceptionjava.lang.SecurityException: Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test    RegisterUser.processRequest(RegisterUser.java:66)    RegisterUser.doPost(RegisterUser.java:173)    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)note The full stack trace of the root cause is available in the Apache Tomcat/7.0.39 logs.

 

4- المشكلة تحدث فقط عندما احاول الاتصال ضمن مشروع WEB باستخدام الServlet، لكن عند استخدام نفس الكود ضمن تطبيق جافا بدون Servlet فانه يعمل بشكل طبيعي وهذا الكود مره اخرى يعمل دون اية مشاكل:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class Test {    public static void main(String[] args){    try{        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");        Statement s = (Statement) con.createStatement();        String name = "Hassan4";        int phone = 8985895;        String insert = "INSERT INTO test VALUES ('" + name + "', " + phone + ")";        s.executeUpdate(insert);        s.close();        con.close();        System.out.println("done");    }catch(Exception e){        throw new SecurityException("Class not found " + e.toString());    }}}

 

 

استخدام نفس الكود دون تغيير يعمل على تطبيق جافا لكن لا يعمل مع الServlet

وشكرا مقدما على الردود..

تم تعديل بواسطه h.shehari
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

المشكلة ليست من doGet بل تحميل محرك mysql، تأكّد مرة أخرى من وضع ملف الـjar المسار السابق وحمّله بوضع:

Class.forName("com.mysql.jdbc.Driver");

قبل:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ضع ملف الـjar الخاص بمحرك mysql في مجلد اسمه lib تحت WEB-INF:

\WEB-INF\lib\mysql-connector-java-*-bin.jar
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ضع ملف الـjar الخاص بمحرك mysql في مجلد اسمه lib تحت WEB-INF:

 

\WEB-INF\lib\mysql-connector-java-*-bin.jar

 

 

جربت وضعه في مسار 

\WEB-INF\lib

 

وايضا جربت مره اخرى ان يكون في المسار

C:\Program Files\Java\jdk1.7.0_15\jre\lib\ext

 

 

لا اعتقد ان هناك مشكلة في مسألة الربط من خلال مكتبة Connector لانه وكما اخبرتكم في الموضوع ان الكود يعمل بشكل سليم على اي تطبيق جافا وجربت انشاء ملف test.java ضمن نفس المشروع مع دالة main وعمل بشكل سليم

اعتقد ان المشكلة وكما يظهر في الException في دالة doGet ضمن ملف السيرفلت RegisterUser.java لكن لم اعرف ما الخطأ فيها خاصة وان هذه الطريقه طبقتها بناء على عدة فيديوهات تعليمية من عدة اشخاص على اليوتيوب وكلهم يستخدمون نفس الطريقة ونفس الخطوات

تم تعديل بواسطه h.shehari
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المشكلة اعتقد كما قال أخي Mr.B تكمن في ملف الجار حاول تطبيق الاعدادت التي كتبها لك في رده الاخير وان شاء الله يمشي الحال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .