الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف ربط Mysql بالtomcat

بدأه شهودة في 1 مايو 2008 · 9 رد · 1,778 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا نزلت ال mysql و connector/j وعندي ال apache tomcat حابة اربط بينهم

ال mysql نزلته ويشتغل بس الملف connector/j ماعرفت وين احطه بالضبط فحطيت mysql-connector-java-5.1.6-bin.jar في هذا الباث C:\Program Files\Java\jdk1.6.0_04\jre\lib\ext

وكتبت كود سيرفلت المشكلة ماطلع لي ايرور انه ماربط بال mysql ولا طلع لي نتايج الكود ؟؟؟

اللي يعرف الطريقة الصحيحة للربط بال mysql لايبخل علي بالمعلومة احتاجها ضروري

#2

connector لا يوضع في الامتداد الذي ذكرتي بل يوضع هنا

C:\apache-tomcat-5.5.17\common\lib

#3

مشكور أخوي عالرد بجرب الحين وبرد عليك

بس بغيت اسأل اذا كان فيه اعدادات ثانية اسويها والا طريقتي صح؟؟؟

عفوا أخوي وش تقصد بال connctor هل هو الملف المضغوط كلهmysql-connector-java-5.1.6 او بس الملف mysql-connector-java-5.1.6-bin.jar؟؟؟

تم تعديل هذه المشاركة بواسطة شهودة في 1 مايو 2008 في 12:06

#4

بالنسبة للـ TOMCAT وعملية الربط فمن المؤكد ان لها اعدادت ... وهذه الاعدادات معروفة وهي وضع بعض الخصائص في متغيرات البيئة لكي يعمل

ولكن لا ادري هل قمت بها ام لا ...

اما الـ Connector فاقصد به هو Driver الذي لابد من وضعه في المسار الذي وضعته قبل لكي تتم عملية الربط ... وبدونه لن يقوم بعملية الربط ابدا

اما الملف لا يتم وضعه كله في المسار السابق ... بل المنتهي بالامتداد JAR وهو الموجود في نفس الملف المضغوط اصلاً

ويمكنك الاستعانه بـ ORACL Driver ... فهو يستطيع ان يربط بالاوراكل ويستطيع ان يربطها بالـ My SQL على حد سواء

#5

بالنسبة لاعدادات التوم كات فقد قمت بها وهي تعمل لدي

اما ال mysql فقد وضعت الملف المنتهي بالjar في المسار الذي قلت عليه ولكن لم يعمل لدي

فعند تشغيل ملف السيرفلت الذي قمت من خلاله بالربط بال mysql فلا تنتج لي سوى صفحة بيضاء لو كانت عملية الربط بقاعدة البيانات غير صحيحة لكان ظهر لي تنبيه بهذا الخطأ ولكن الظاهر لي هو صفحة بيضاء مع العلم انه في مل السيرفلت المفروض ان يطبع لي في الصفحة البيانات الموجودة في جداول قاعدة بياناتي

؟؟؟؟

#6

لا اعرف اين تكمن المشكلة بالضبط ...

ولكن فيما لو قمتي بجلب هذه المتغيرات وجلب كلاس الـ SERVLET ووضعها هنا لكان افضل

ولكن ابحثي عن ملف servlet-api.jar هل هو موجود في نفس المسار الذي ذكرته في السابق ووضعت فيه Driver

وهل قمت بوضعه في بيئة المتغيرات

وبالنسبة للـDriver واذا كنت تردين ان تتاكدي هل قام بالربط او لا ... فما عليك سوى تشغيل SERVLET مرة اخرى

واذا ظهرت الصفحة البيضاء الناتجة منه فما عليك سوى الذهاب الى Driver في المجلد وحذفة

اذا قام بالحذف فان البرنامج لم يتعرف عليه ... وااذا ظهرت لك رسالة منع فمعناها ان الdriver قام بالربط

والمشكلة هي بالسيرفلت وليس عملية الربط

#7

ملف servlet-api.jar موجود في نفس المسار

وظهرت لي رسالة المنع عندما اردت ان احذف الdriver

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class for Servlet: ProcessStudentForm
 *
 */
 public class jdb11 extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {


  //end main
	 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			// TODO Auto-generated method stub

try {
Statement stmt;
Class.forName("com.mysql.jdbc.Driver");
String url =
 "jdbc:mysql://localhost:3306/junk";
Connection con =
 DriverManager.getConnection(
			 url,"root", "root");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
stmt = con.createStatement();

stmt.executeUpdate(
				"INSERT INTO myTable(test_id, " +
					"test_val) VALUES(1,'One')");



stmt.executeUpdate(
				"INSERT INTO myTable(test_id, " +
					"test_val) VALUES(2,'Two')");
	  stmt.executeUpdate(
				"INSERT INTO myTable(test_id, " +
				  "test_val) VALUES(3,'Three')");
	  stmt.executeUpdate(
				"INSERT INTO myTable(test_id, " +
				   "test_val) VALUES(4,'Four')");
	  stmt.executeUpdate(
				"INSERT INTO myTable(test_id, " +
				   "test_val) VALUES(5,'Five')");

stmt = con.createStatement(
			   ResultSet.TYPE_SCROLL_INSENSITIVE,
					 ResultSet.CONCUR_READ_ONLY);

ResultSet  rs = stmt.executeQuery("SELECT * " +
				"from myTable ORDER BY test_id");

System.out.println("Display all results:");
	  while(rs.next()){
		int theInt= rs.getInt("test_id");
		String str = rs.getString("test_val");
		System.out.println("\ttest_id= " + theInt
							 + "\tstr = " + str);
}

con.close();
}catch( Exception e ) {
e.printStackTrace();
}//end catch			  
	}
	 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 doGet(request, response);// TODO Auto-generated method stub
		}   			  

}//end class Jdbc11

هذا هو كود السيرفلت

تم تعديل هذه المشاركة بواسطة شهودة في 2 مايو 2008 في 18:51

#8

الشيفرة السابقة ليس فيها خطا ... وقمت بتشغيلة كما هو واظهر لي النتائج والبيانات المخزنة في قاعدة البيانات ...

طبعاً قمت بتغير بعض السطور لاني اعمل على قاعدة بيانات اخرى غير MYSQL

ولكن احب ان اسالك سؤال جزاك الله خير ...

النتائج او البيانات المخزنه في قاعدة البيانات اين تريدينها ان تظهر ...؟

تم تعديل هذه المشاركة بواسطة Jsp في 2 مايو 2008 في 21:23

#9

حسب الكود السابق من المفترض ان تظهر في صفحة السيرفلت نفسها

#10

عفوا ... حسب الشيفرة السابقة لن تظهر النتائج على صفحة السيرفلت نفسها ...

بل النتائج تظهر على الشاشة السوداء ... والسبب في ذلك وهو هذا الامر

System.out.println();

فالامر هذا كما تعريفين للطباعة على الشاشة السوداء ... ولكن في السيرفلت يختلف الامر قليلاً فلابد من ازالة كلمة System

ويصبح الامر كالتالي :

out.println();

لكن عند حذف جميع الكلمات من الشيفرة السابقة فسوف يظهر خطا وهو انه لا يعرف الدالة هذه

ولهذا لابد من اضافة هذا الامر قبل جملة try والتي وضعت فيها العمليات هذا الامر :

PrintWriter out = response.getWriter();

وبعد هذه الامور سوف يطبع النتائج في صفحة السيرفلت .. مع اني ارى بعض التعقيد والاضافات في جمل SQL والتي ليس فيها فائدة ...

جربي هذا الامر وان شاء الله تري النتيجة ...

مواضيع مشابهة