السلام عليكم ورحمه الله وبركاته
دي شرح فيديوا لطريقه التعامل مع قاعده بيانات javadb الموجوده مع NetBeans
السلام عليكم ورحمه الله وبركاته
دي شرح فيديوا لطريقه التعامل مع قاعده بيانات javadb الموجوده مع NetBeans
تم تعديل هذه المشاركة بواسطة javaeg في 15 أغسطس 2010 في 16:07
SCJP
SCBCD Soon
السلام عليكم
جزاكم الله خيرا على الشرح
لكن لدى سوال
ليه اثناء التشغيل اعترض على
DriverManager.deregisterDriver(new Driver30());
ويعنى ايه Driver30 , Driver20 , Driver40
ايه الفرق بينهم
وليه استخدمت هذه الطريقه فى تحميل الـ Driver
مش ممكن اعمل تحميل للـ Driver بالطريقه دى ؟
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");مش قصدى ليه بالتحديد الطريقه
انا اقصد هل يوجد مثل هذه الطريقه مثلا ف mySQL
ام هذه طريقه خاصه بالـ Derby
طريقه انى اكتب
DriverManager.deregisterDriver(new AutoloadedDriver());
لم حضرتك استخدم هذه الجمله فى اضافه بيانات فى قاعده البيانات استخدمت هذا الامر
statement.execute("insert into users values ('mahmoud' , '1111')");لماذا لا تستخدم هذا الامر مع انه فى الوصف الخاص بالـdocumentation هنلاقى ان الـ executeeUpdate
مسئولة عن
اقتباسExecutes the given SQL statement, which may be anINSERT, UPDATE, or DELETE statement or an
SQL statement that returns nothing, such as an SQL DDL statement
ممكن الاطلاع عليها من الرابط التالى http://download-llnw.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html
يعنى استخدمها كدا
statement.executeUpdate("insert into users values ('mahmoud' , '1111')");وهذا تطبيقى على ما تم شرحه فى الفيديو
تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 15 أغسطس 2010 في 18:20
السلام عليكم ورحمه الله وبركاته
انا مبسوط من تفاعلك اخي محمود مع الموضوع ومن ملاحظاتك الجيده
في البدايه انا مستخدمتش deregisterDriver انا استخدمت registerDriver
DriverManager.registerDriver(new Driver30());
الاثنين عكس بعض تماما ووجودهم هيه ميزه بدل مستخدم
Class.forName("");الاثنين ممكن استخدمهم مع اي قاعده بيانات سواء MySQl او JavaDb
Class.forName
دي التقليديه الي الكل عارفها بتساعدني اني احمل الدرايفر واتعامل معاها او بمعني تاني اعمله register
طب هل ممكن اعمل عمليه عكسيه اني خلاص مش محتاج الدرايفر ده ممكن اعمله deregister مع Class.forName مينفعش انما باستخدك deregisterDriver Method من DriverManager وبستخدم registerDriver علشان احمل الدرايفر
الاختلاف كمان ان Class.forName بتاخد String لو لحظت دي مسار الدرايفر بتاعك ممكن متكونش حافظ اسم الدرايفر زي مثلا org.apache.derby.jdbc.EmbeddedDriver او org.apache.derby.jdbc.ClientDriver او الدرايفر بتاع mysql
او اوراكل
فانا بفضل انس استخدم DriverManager للميزه دي انا بعض مبضيف pakages الي هستخدمها علشان اتصل بقاعده البيانات هنشاء Object نوع الدرايفر وابعته لregisterDriver ودي مش خاصه بقاعده بيانات محدده
والداله دي بتاخد حاجه من نوع Driver وبنبعتلها Implementation الخاص vendor
علشان كده كان قدامي كذا نوع من الدرايفر اول مضغط CTRL+SPACE وظهر لي ShutdownException لاني استخدمت نوع غير مناسب org.apache.derby.jdbc.Driver20وorg.apache.derby.jdbc.Driver30وorg.apache.derby.jdbc.Driver40
دلو لهم استخدامت اخري في انهم مش انا الي بستخدمهم دول بيستخدموا من قبل EmbeddedDriver
علشان يتاكدوا من اصدار JDBC
انا كنت عاوز افرق بين نوعين او طريقتين من التعامل مع Derbyكل طريقه لها درايفر مختلف هزكرها في رد تاني
حضرتك بتقول اني استخدمت
statement.execute("insert into users values ('mahmoud' , '1111')");مستخدمتش الموصوف ليه في الدكيمنتاشن
statement.executeUpdate("insert into users values ('mahmoud' , '1111')");هوه في جميع الاحوال مش هيظهر ليه باذن الله خطا هوه كلامك صح الدكيومنتاشن بيقول كده
بس بردك داخل الدكيمنتاشن هتلاقي ان execute بتستخدم علشان اطبق اي نوع من انواع SQL
execute(String sql)
Executes the given SQL statement, which may return multiple results.طيب وexecute بترجع ايه
Returns:
true if the first result is a ResultSet object; false if it is an update count or there are no resultsيعني ممكن استخدمها مفهاش مشكله
وعلي فكره بردك بص كده في الدكيمنتاشن في استخدام executeupdate
DDL
executeUpdate(String sql)
Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.يعني مش هتفرق انا عارف ان الي بترجع رقم يقولي جمله الاستعلام دي سمعت او اثرت في كام Row بس هل فيه حد بيستخدمه الرقم الي راجع ده في حاجه في الغالب لاء بالزات في جمل insert لاني هكون عارف كام قيمه انا دخلتها
SCJP
SCBCD Soon
يمكن استخدام javadb بطريقتان كل طريقه لها الدرايفر الخاص بها
1. Embedded Server Edition the Derby engine does not run in a separate process, and there are no separate database processes to start up and shut down. Instead, the Derby database engine runs inside the same Java Virtual Machine (JVM) as the application.

بمعني ان الداتا بيس علي نفس الجهاز ولان الديربي مصنوعه من الجافا في هترن علي نفس الماشين
وده الدرايفر بتاعنا
driver = "org.apache.derby.jdbc.EmbeddedDriver";
2. Network Server Edition An application can also access a Derby database using the more familiar client/server mode. This is achieved via a framework that embeds Derby and handles database requests from applications, including applications running in different JVMs on the same machine or on remote machines. The Derby Network Server is such a framework. It embeds Derby and manages requests from network clients.

وده الدرايفر التاني لها
driver = "org.apache.derby.jdbc.ClientDriver";
دلوقتي انا في المثال استخدمت AutoloadedDriver
وفيها Database Engine بيتم تحميله لحظه مباخد الكونكشن مش من لحظه عمل registration له من خلال DriveManager
SCJP
SCBCD Soon
اقتباسالاثنين ممكن استخدمهم مع اي قاعده بيانات سواء MySQl او JavaDbClass.forName
دي التقليديه الي الكل عارفها بتساعدني اني احمل الدرايفر واتعامل معاها او بمعني تاني اعمله register
طب هل ممكن اعمل عمليه عكسيه اني خلاص مش محتاج الدرايفر ده ممكن اعمله deregister مع Class.forName مينفعش انما باستخدك deregisterDriver Method من DriverManager وبستخدم registerDriver علشان احمل الدرايفر
الاختلاف كمان ان Class.forName بتاخد String لو لحظت دي مسار الدرايفر بتاعك ممكن متكونش حافظ اسم الدرايفر زي مثلا org.apache.derby.jdbc.EmbeddedDriver او org.apache.derby.jdbc.ClientDriver او الدرايفر بتاع mysql
او اوراكل
فانا بفضل انس استخدم DriverManager للميزه دي انا بعض مبضيف pakages الي هستخدمها علشان اتصل بقاعده البيانات هنشاء Object نوع الدرايفر وابعته لregisterDriver ودي مش خاصه بقاعده بيانات محدده
ما فهمته أنك تفضل إستخطام DriverManager.registerDriver فوق Class.forName للأسباب الأتيه:
1- في حالة registerDriver أنت تستخدم full class name بدلا من string
2- في حالة registerDriver بإمكانك علم deregisterDriver ..
حسنا, بالنسبة للرقم 1 فهي ميزه لل Class.forName ..... فبإمكانك ترجمة البرنامج دون الحاجه لوجود ال JDBC class إلا فقط عند ال runtime و هي طبعا ميزه و ليست عيب.
بالنسبة للنقطة الثانيه, تقول أنت تستخدم register لكي تستطيع عمل deregister .... مامصدر هذه المعلومه؟
*- يحظر استخدام اللهجة العامية
*- أو كتابة الأسئلة باللغة الإنجليزية
*- أو كتابة الكلمات الإنجليزية بالعربية
====
هويدي كتب:ما فهمته أنك تفضل إستخطام DriverManager.registerDriver فوق Class.forName للأسباب الأتيه:
1- في حالة registerDriver أنت تستخدم full class name بدلا من string
2- في حالة registerDriver بإمكانك علم deregisterDriver ..
حسنا, بالنسبة للرقم 1 فهي ميزه لل Class.forName ..... فبإمكانك ترجمة البرنامج دون الحاجه لوجود ال JDBC class إلا فقط عند ال runtime و هي طبعا ميزه و ليست عيب.
بالنسبة للنقطة الثانيه, تقول أنت تستخدم register لكي تستطيع عمل deregister .... مامصدر هذه المعلومه؟
السلام عليكم
اولا كوني اني اذكر ميزات طريقه مش معني كده ان بقول الطريقه التانيه فيها مشكله
انا عارف ان Class.forName ميزتها في dynamic class loading
بس فرضا انت كتبت اسم Driver خطا lمش هتعرف غير في Runtime
انما registerDriver بتاخد Object من نوع Driver لو كان Driver مش موجود هشوف error at compiler time
بالنسبه للنقطه التانيه ممكن تتطلع علي Documentation دي مصدر معلوماتي
deregisterDriver:Removes a driver from the {@code DriverManager}'s registered driver list. This will only succeed when the caller's class loader loaded the driver that is to be removed. If the driver was loaded by a different class loader, the removal of the driver fails silently.
If the removal succeeds, the {@code DriverManager} will not use this driver in the future when asked to get a {@code Connection}.
SCJP
SCBCD Soon
أولا, أريد أن أشكرك لرد... جزاك الله خيرا..
بالنسبة للسؤال الأول.... في رأي الشخصي,,, لايوجد شئ إسمه أن أكتب إسم ال Driver خطأ... :D
بالنسبة للسؤال الثاني:
جزاك الله خيرا على المعلومه القيمه, لكن... هل وضعت الرابط لهذه المعلومه, لأني نظرت هنا فلم أجد هذه المعلومه, فهل نظرتُ في المكان الخطآ؟
نأتى للمعلومه نفسها..
اقتباسThis will only succeed when the caller's class loader loaded the driver that is to be removed. If the driver was loaded by a different class loader, the removal of the driver fails silently.
فهذا ينطبق على Class.forName و DriverManager.registerDriver ... وليس ل registerDriver فقط.. أليس كذلك...
وهذا منطقي يا أخي, لماذا؟ تعال لنلق نظره على الكود الخاص ب DriverManager :
private static synchronized Connection getConnection(
String url, java.util.Properties info, ClassLoader callerCL) throws SQLException {
/*
* When callerCl is null, we should check the application's
* (which is invoking this class indirectly)
* classloader, so that the JDBC driver class outside rt.jar
* can be loaded from here.
*/
if(callerCL == null) {
callerCL = Thread.currentThread().getContextClassLoader();
}
if(url == null) {
throw new SQLException("The url cannot be null", "08001");
}
println("DriverManager.getConnection(\"" + url + "\")");
if (!initialized) {
initialize();
}
// Walk through the loaded drivers attempting to make a connection.
// Remember the first exception that gets raised so we can reraise it.
SQLException reason = null;
for (int i = 0; i < drivers.size(); i++) {
DriverInfo di = (DriverInfo)drivers.elementAt(i);
// If the caller does not have permission to load the driver then
// skip it.
if ( getCallerClass(callerCL, di.driverClassName ) != di.driverClass ) {
println(" skipping: " + di);
continue;
}
try {
println(" trying " + di);
Connection result = di.driver.connect(url, info);
if (result != null) {
// Success!
println("getConnection returning " + di);
return (result);
}
} catch (SQLException ex) {
if (reason == null) {
reason = ex;
}
}
}
// if we got here nobody could connect.
if (reason != null) {
println("getConnection failed: " + reason);
throw reason;
}
println("getConnection: no suitable driver");
throw new SQLException("No suitable driver", "08001");
}ملحوظة, كلامى حول رقم 2 مجرد إستنتاجات شخصيه,,, من واقع ال docs و الكود
تم تعديل هذه المشاركة بواسطة هويدي في 16 أغسطس 2010 في 19:28
جزاك الله خيراا اخي الفاضل هويدي
المناقشه معك مثمرة جدااا جزاك الله خيرااا
انا اقصد driver class name
بالنسبه لمصدر المعلومه انا عملت بحث عليها علشان اجبها هيه نفس الرابط الي وضعته حضرتك ولقيت رابط اخر موضحها بالتفصيل زي منقلتها الرابط
انا فضلت احط الرابط التاني علشان موضح اكثر
بالنسبه deregisterdriver
دي مثال عليها
import java.sql.Driver; import java.sql.DriverManager;
import java.sql.SQLException;
for (Enumeration e = DriverManager.getDrivers(); e.hasMoreElements();) {
{
DriverManager.deregisterDriver(driver);
}هيه فعلا نقدر نستخدمها علي loaded drivers جمعيا مش مهم مين الي عملهم register سواء class.forName او DriverManager.registerDriver
ولو حولت اقول DriverManager.getconnection بعد عمليه deregister هيعطيني exception
انا شايف انهم readable عن class.forName والي ممكن تستخدم مع اي كلاس مش Driver بس انما register , deregister بتطلب Driver class
class.forName بتستخدم ايضا في موضوع reflection
دي الكود الخاص بكلا من registerDriver , deregisterDriver
public static synchronized void registerDriver(java.sql.Driver driver)
throws SQLException {
if (!initialized) {
initialize();
}
DriverInfo di = new DriverInfo();
di.driver = driver;
di.driverClass = driver.getClass();
di.driverClassName = di.driverClass.getName();
// Not Required -- drivers.addElement(di);
writeDrivers.addElement(di);
println("registerDriver: " + di);
/* update the read copy of drivers vector */
readDrivers = (java.util.Vector) writeDrivers.clone();
} public static synchronized void deregisterDriver(Driver driver)
throws SQLException {
// Gets the classloader of the code that called this method,
// may be null.
ClassLoader callerCL = DriverManager.getCallerClassLoader();
println("DriverManager.deregisterDriver: " + driver);
// Walk through the loaded drivers.
int i;
DriverInfo di = null;
for (i = 0; i < writeDrivers.size(); i++) {
di = (DriverInfo)writeDrivers.elementAt(i);
if (di.driver == driver) {
break;
}
}
// If we can't find the driver just return.
if (i >= writeDrivers.size()) {
println(" couldn't find driver to unload");
return;
}
// If the caller does not have permission to load the driver then
// throw a security exception.
if (getCallerClass(callerCL, di.driverClassName ) != di.driverClass ) {
throw new SecurityException();
}
// Remove the driver. Other entries in drivers get shuffled down.
writeDrivers.removeElementAt(i);
/* update the read copy of drivers vector */
readDrivers = (java.util.Vector) writeDrivers.clone();
}هنالاحظ فيه vector بيضيف فيه Driver في حاله register وبيحزف في حاله deregister
وبشكر حضرتك تاني علي ردك ومناقشتك المثمره
جزاك الله خيراا ورمضان كريم
تم تعديل هذه المشاركة بواسطة javaeg في 16 أغسطس 2010 في 21:30
SCJP
SCBCD Soon
اقتباسالاثنين ممكن استخدمهم مع اي قاعده بيانات سواء MySQl او JavaDb
Class.forName
دي التقليديه الي الكل عارفها بتساعدني اني احمل الدرايفر واتعامل معاها او بمعني تاني اعمله register
طب هل ممكن اعمل عمليه عكسيه اني خلاص مش محتاج الدرايفر ده ممكن اعمله deregister مع Class.forName مينفعش انما باستخدك deregisterDriver Method من DriverManager وبستخدم registerDriver علشان احمل الدرايفر
لكن عندك كدا انت اقتصرت الشغل على نوع واحد من قواعد البيانات وانت تذكر انه
ان هذه الداله
DriverManager.deregisterDriver(new AutoloadedDriver());
اـ AutoloadedDriver لا توجد فى باقى قواعد البيانات
لذلك لم يتم توحيد الكود الذى تكتبه
فالجافا تم توحيد الكود والطريقه لكن الاختلاف فقط يكون ف اسم الـ Driver وليس الدوال
اقتباسحضرتك بتقول اني استخدمتstatement.execute("insert into users values ('mahmoud' , '1111')");مستخدمتش الموصوف ليه في الدكيمنتاشن
statement.executeUpdate("insert into users values ('mahmoud' , '1111')");هوه في جميع الاحوال مش هيظهر ليه باذن الله خطا هوه كلامك صح الدكيومنتاشن بيقول كده
بس بردك داخل الدكيمنتاشن هتلاقي ان execute بتستخدم علشان اطبق اي نوع من انواع SQL
يعني ممكن استخدمها مفهاش مشكله
لكن القصد انها موجوده لكى استخدمها يعنى لم تستخدم حاجه مخصصه لغرض معين
ام تستخدم حاجه ممكن تفيدك ف حالات وممكن لالالا
وكمان ازاى تعرف انه تم تنفيذ شىء هل صح ولا غلط
هل كل مره ادخل على قاعده البيانات وانظر هل تم التحديث ام لالا ؟؟
لا طبعا
لذلك ينصح باستخدامها
اقتباسوعلي فكره بردك بص كده في الدكيمنتاشن في استخدام executeupdateDDL
executeUpdate(String sql) Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.يعني مش هتفرق انا عارف ان الي بترجع رقم يقولي جمله الاستعلام دي سمعت او اثرت في كام Row بس هل فيه حد بيستخدمه الرقم الي راجع ده في حاجه في الغالب لاء بالزات في جمل insert لاني هكون عارف كام قيمه انا دخلتها
لا طبعا حضرتك ممكن ف برنامج لا تهتم هل تم الادراج بنجاح ام لا
وهل وجد مثلا مستخدم بنفس الاسم فذلك فانه لم يتم اضافته
حضرتك تعرف منين ؟؟ طبعا تعرف من الـ return type للداله
حسب الرقم اللى هترجعه الداله هتعرف هل سمعت فى قاعده البيانات ولا لالا
هويدي كتب:ما فهمته أنك تفضل إستخطام DriverManager.registerDriver فوق Class.forName للأسباب الأتيه:
1- في حالة registerDriver أنت تستخدم full class name بدلا من string
2- في حالة registerDriver بإمكانك علم deregisterDriver ..
حسنا, بالنسبة للرقم 1 فهي ميزه لل Class.forName ..... فبإمكانك ترجمة البرنامج دون الحاجه لوجود ال JDBC class إلا فقط عند ال runtime و هي طبعا ميزه و ليست عيب.
بالنسبة للنقطة الثانيه, تقول أنت تستخدم register لكي تستطيع عمل deregister .... مامصدر هذه المعلومه؟
اممممم جميل
فعلا عندك حق اخى هويدى
وكمان انا فى الـ derby لا احتاج الى كل هذه المكتبات التى استخدمها فى شرح الفيديو
فانا احتاج الى مكتبه واحده derby.jar فقظ
اما بالنسبه للنقطه الثانيه فعلا انا بسال نفس السوال
يعنى ايه انا لم مش اكون عاوز الاتصال استخدم deregister كيف ؟ ؟
مفيش حاجه موجوده اسمها ملهاش لزمه
deregister موجوده لغرض تم توضيحه في الردود السابقه لو ملهاش وظيفه في الوقت الحالي او مش مستحب انك تستخدمها Documentation هتقولك @Deprecated Method وهيكتبلك السبب
execute ,executeupdate تم توضيح الفرق من Documentation
Execute Statement is used to execute SQL Statement
وهل update او insert مش SQL Statement!!!!!!!!!!!!! :mellow:
وحاجه تانيه سواء انا مستخدم execute ,executeupdate لو انا كاتب جمله الاستعلام بشكل خاطئ :wacko: اظن اكثر حاجه هتبرهن ان الادراج متمش sqlexception محترم
SQLException - if a database access error occurs
Mahmoud Kelany كتب:وكمان انا فى الـ derby لا احتاج الى كل هذه المكتبات التى استخدمها فى شرح الفيديوفانا احتاج الى مكتبه واحده derby.jar فقظ
المعلومه دي مش صحيحه بنسبه 100% ممكن نبص علي الاقتباس ده افضل
[at]Installing required jar files and adding them to the classpath
To use the Network Server and network client driver, add the following jar file to your server classpath:
* derbyrun.jar
Adding this file to your classpath has the effect of including all of the Derby classes in your classpath. These classes are in the following jar files, which you can also add to your classpath separately:
* derbynet.jar
This jar file contains the Network Server code. It must be in your classpath to start the Network Server.
* derby.jar
This jar file contains the Derby database engine code. It must be in the classpath in order for the Network Server to access Derby databases. derby.jar is included in the Class-Path attribute of derbynet.jar's manifest file. If you have derbynet.jar in the classpath and derby.jar is in the same directory as derbynet.jar, it is not necessary to include derby.jar explicitly.
* derbyclient.jar
This jar file contains the Derby Network Client JDBC driver that is necessary for communication with the Network Server. It must be in the classpath of the application on the client side in order to access Derby databases over a network.
[/at]
SCJP
SCBCD Soon
لو سمحتوا لى اخوتى انا لا افضل JAVA DB لأنى حاولت معاها كتيير وبلاقى دايما مشاكل ليس فى الConnection ولكن فى تطبيقات add , update ,remove ولذلك فضلت اشتغل على access ولكن المشكله ما زالت موجوده
انا عايز اعمل add للبيانات الى فى ال Text Box
st.execute("insert into course values (jTextField1,jTextField2)");ولكن بيتج ERROR :excl: ما العمل؟؟
وشكرا :unsure:

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك
st.execute("insert into course values (" +jTextField1.getText() + ", " + jTextField2.getText() + " )");تم تعديل هذه المشاركة بواسطة هويدي في 23 أغسطس 2010 في 17:41
هويدي كتب:st.execute("insert into course values (" +jTextField1.getText() + ", " + jTextField2.getText() + " )");
مشكور جدا على المساعده والكود منطقى جدا ولكن نفس السطر ينتج نفس ال ERROR
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
لأنى لو غيرت ال parameters هكذا
st.execute("insert into course values ('3','PHP')");فانها تعمل عادى جدا مش عارف ايه المشكله؟؟؟؟؟

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك
The expendable كتب:مشكور جدا على المساعده والكود منطقى جدا ولكن نفس السطر ينتج نفس ال ERROR
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.لأنى لو غيرت ال parameters هكذا
st.execute("insert into course values ('3','PHP')");فانها تعمل عادى جدا مش عارف ايه المشكله؟؟؟؟؟
امممم
من الملاحظ انك تقول ان عندما تضع فى اول خانه رقم int وفى الخانه الثانيه String فانه يقبل ذلك
فبالتالى انت معرف العمود الاول على انه من النوع Number = integer وانت تحاول ان تضع به قيمه VarChar = String
فلذلك
عليك ان تحرص على ان المستخدم يدخل فى الـ jTextField1
تحرص على انه يدخل رقما وتعمل له عمليه parse
ليكون الكود هكذا
جرب هذا
st.execute("insert into course values (" + Integer.parseInt(jTextField1.getText()) + ", " + jTextField2.getText() + " )");اتمنى ان تعمل باذن الله بشكل جيد
تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 23 أغسطس 2010 في 20:31
تحياتى لاجمد اعضاء
الكود لم يعمل ولكنى وجدت الحل بفضل الله ومساعدتكم
نحن نسينا وضع العلامات ''
st.execute("insert into course values ('" + Integer.parseInt(jTextField1.getText()) + " ',' " + jTextField2.getText() + " ')");وشكرا :blush:

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك
The expendable كتب:تحياتى لاجمد اعضاء
الكود لم يعمل ولكنى وجدت الحل بفضل الله ومساعدتكم
نحن نسينا وضع العلامات ''
st.execute("insert into course values ('" + Integer.parseInt(jTextField1.getText()) + " ',' " + jTextField2.getText() + " ')");وشكرا :blush:
ماشى بس بدال انت مستخدم المتغير الاول على انه integer
يقبى مفيش ( ' ) single quotation
لانه رقم والرقم لا يوضع بين single quotation
لو اشتغلت دلوقتى
ممكن فى بعض الاحيان فى عمليه الـ update مثلا يرمى لك Exceptions فبالتالى
تعدلها وتكون فى الامان احسن :) :)
تعديلها يكون كدا
st.execute("insert into course values (" + Integer.parseInt(jTextField1.getText()) + ",' " + jTextField2.getText() + " ')");تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 24 أغسطس 2010 في 00:10
Mahmoud Kelany كتب:ماشى بس بدال انت مستخدم المتغير الاول على انه integer
يقبى مفيش ( ' ) single quotation
لانه رقم والرقم لا يوضع بين single quotation
لو اشتغلت دلوقتى
ممكن فى بعض الاحيان فى عمليه الـ update مثلا يرمى لك Exceptions فبالتالى
تعدلها وتكون فى الامان احسن :) :)
تعديلها يكون كدا
st.execute("insert into course values (" + Integer.parseInt(jTextField1.getText()) + ",' " + jTextField2.getText() + " ')");
كلامك صح بس ولا حتى الTEXT Fields لكن لازم تحط باقى parameters بين single quotations
وضع ال single quotations سيكون كالتالى
values (' " + Integer.parseInt(jTextField1.getText()) + " ',' " + jTextField2.getText() + " ')");تم تعديل هذه المشاركة بواسطة The expendable في 24 أغسطس 2010 في 01:44

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك
The expendable كتب:كلامك صح بس ولا حتى الTEXT Fields لكن لازم تحط باقى parameters بين single quotations
وضع ال single quotations سيكون كالتالى
values (' " + Integer.parseInt(jTextField1.getText()) + " ',' " + jTextField2.getText() + " ')");
ماشى بس انت عامل
Integer.parseInt(jTextField1.getText())
يقبى مش تستخدم ولا قبله ولا بعده single quotations لان دا رقم
ومش ينفع انك تكتب قبله وبعده single quotations
طب جرب وشوف هل فعلا هل هتشتغل ولا لا
على فكرة يا محمود في بعض الناس بتحط المعاملات int من النوع string
على أساس بيخافوا يصير عندهم حروف في هذا النوع من المعاملات في يوم من الأيام
تحياتي
Mahmoud Kelany كتب:ماشى بس انت عامل
Integer.parseInt(jTextField1.getText())يقبى مش تستخدم ولا قبله ولا بعده single quotations لان دا رقم
ومش ينفع انك تكتب قبله وبعده single quotations
طب جرب وشوف هل فعلا هل هتشتغل ولا لا
لا طبعا مش هتشتغل لأن ده كود ونفس الكلام فى حاله ال Text Field
وانا معاك ان لو رقم مينفعش احط single quotations ولا حتى لو Text
وتحياتى

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك
علاء الصالحي كتب:على فكرة يا محمود في بعض الناس بتحط المعاملات int من النوع string
على أساس بيخافوا يصير عندهم حروف في هذا النوع من المعاملات في يوم من الأيام
تحياتي
امممم
ماشى يا عموو علاء
بس انا علشان هو مستخدم
Integer.parseInt(jTextField1.getText());
المفروض ان المعامل يكون int مش String