ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
אורח · ·
 

הודעה פורסם: 10/10/2015 - 18:41
נושא ההודעה: זקוק לקצת הכוונה , התחברות sql דרך jdbc של javaEE

שלום לכל החברים ,
אני מתכנת בדרך python\php

לצורך פרוייקט שאני צריך לכתוב ב javaEE אני משתמש בשרת javaEE

לצורך בדיקת ההבדלים בין השרתים יש לי שתי סביבות פיתוח
1. שרת GlassFish
2. שרת Tomcat של אפצ'י

עד עכשיו למדתי דברים בסיסיים בסביבה jsf\jsp (עוד לא הגעתי ל EJB )


בלי קשר :
יש לי שרת mysql (מימוש של mardiaDB)

על השרת mysql יש לי מסד נתונים בשם "test2"

במסדר הנתונים יש לי טבלה בשם "receipt" שמכילה את השדות

name,description,text

קוד ה SQL שיצאתי בעזרתו את הטבלה מפורט על מנת נהירות המידע:

קוד:
'CREATE TABLE IF NOT EXISTS receipt(
     id INT PRIMARY KEY AUTO_INCREMENT,
     name VARCHAR(155),
     description VARCHAR(155),
     text    TEXT
    )';



עכשיו אני מעוניין להתחבר למסד הנתונים הזה דרך jdbc דרך סביבת javaEE

יש לי טופס jsp ו servlet בשם ReceiptServlet
בטופס עצמו אני מכניס את שדה ה אקשן כך ..
<form action="ReceiptServlet>

וזה עובר להפניה ל servlet (ה servlet עצמו והטופס עובדים )

איך אני מתחבר מה Servlet ל mysql ?
ניסיתי בתחילת קובץ ה servlet
לעשות import ל
import java.sql.Connection;
import java.sql.SQLException
import java.sql.PrePareStatment

וכו'

כתבתי את השורות האלה בתור קוד התחברות למסד נתונים
שם המסד ב mysql הוא test2 ,
שם הטבלה שברצוני להכניס את המידע ל receipt

קוד:

 try{
              String sql="INSERT INTO receipt VALUES(?,?,?)";
            PreparedStatement stmt=null;
            Connection conn=null;
            conn=DriverManager.getConnection("jdbc:mysql://localhost/test2?"+"user=root&password=11235813");
           // stmt=(PreparedStatement)conn.prepareStatement(sql);
           // stmt.setString(1, name);
           // stmt.setString(3,text);
            stmt.executeQuery(sql);
          }catch(Exception e){}
        }


פה אני מבולבל Embarassed

Razz אשמח לכל עזרה אפשרית \ הכוונה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
לומבינבג'אווהאורח · ·
 

הודעה פורסם: 11/10/2015 - 06:10
נושא ההודעה:

מה בעצם אתה שואל??

השורה
conn=DriverManager.getConnection("jdbc:mysql://localhost/test2?"+"user=root&password=11235813");

מקפיצה לך exeption או לא?
לדבג אתה יודע?

גיגלת?
http://www.roseindia.net/jdbc/jdbc-mysql/MysqlConnect.shtml



אגב מריה הוא פורק של mysql.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 06:40
נושא ההודעה:

השאלה הראשונה היא איזה exception אתה מקבל?
דברים אחרים שקופצים לי לעין:
- אני לא חושב שה-SQL שלך 100% חוקי (אתה מכניס 3 ערכים לטבלה עם 4 עמודות)
- בשבי insert נדמה לי אתה צריך להשתמש ב-executeUpdate או אולי ב-execute ולא ב-executeQuery
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 10:01
נושא ההודעה: Re: זקוק לקצת הכוונה , התחברות sql דרך jdbc של javaEE

Anonymous :
שלום לכל החברים ,
אני מתכנת בדרך python\php

לצורך פרוייקט שאני צריך לכתוב ב javaEE אני משתמש בשרת javaEE

לצורך בדיקת ההבדלים בין השרתים יש לי שתי סביבות פיתוח
1. שרת GlassFish
2. שרת Tomcat של אפצ'י

עד עכשיו למדתי דברים בסיסיים בסביבה jsf\jsp (עוד לא הגעתי ל EJB )


בלי קשר :
יש לי שרת mysql (מימוש של mardiaDB)

על השרת mysql יש לי מסד נתונים בשם "test2"

במסדר הנתונים יש לי טבלה בשם "receipt" שמכילה את השדות

name,description,text

קוד ה SQL שיצאתי בעזרתו את הטבלה מפורט על מנת נהירות המידע:

קוד:
'CREATE TABLE IF NOT EXISTS receipt(
     id INT PRIMARY KEY AUTO_INCREMENT,
     name VARCHAR(155),
     description VARCHAR(155),
     text    TEXT
    )';



עכשיו אני מעוניין להתחבר למסד הנתונים הזה דרך jdbc דרך סביבת javaEE

יש לי טופס jsp ו servlet בשם ReceiptServlet
בטופס עצמו אני מכניס את שדה ה אקשן כך ..
<form action="ReceiptServlet>

וזה עובר להפניה ל servlet (ה servlet עצמו והטופס עובדים )

איך אני מתחבר מה Servlet ל mysql ?
ניסיתי בתחילת קובץ ה servlet
לעשות import ל
import java.sql.Connection;
import java.sql.SQLException
import java.sql.PrePareStatment

וכו'

כתבתי את השורות האלה בתור קוד התחברות למסד נתונים
שם המסד ב mysql הוא test2 ,
שם הטבלה שברצוני להכניס את המידע ל receipt

קוד:

 try{
              String sql="INSERT INTO receipt VALUES(?,?,?)";
            PreparedStatement stmt=null;
            Connection conn=null;
            conn=DriverManager.getConnection("jdbc:mysql://localhost/test2?"+"user=root&password=11235813");
           // stmt=(PreparedStatement)conn.prepareStatement(sql);
           // stmt.setString(1, name);
           // stmt.setString(3,text);
            stmt.executeQuery(sql);
          }catch(Exception e){}
        }


פה אני מבולבל Embarassed

Razz אשמח לכל עזרה אפשרית \ הכוונה


1. אתה שמת בהערה את את prepare ו ה set.
2. ה prepare שלך שגוי צריך להיות :
קוד:
INSERT INTO receipt (name, description , text) VALUES(?,?,?)


3. ה set שלך לא נכון צריך להיות :

stmt.setString(1, "name");
stmt.setString(2, "text");
stmt.setString(3, "desc");

4. לא ביצעת commit -
5. לא ידוע למה עשית executeQuery
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 10:34
נושא ההודעה:

כן אני יודע שיש שגיאות ,
לכן כתבתי jsp חדש


קוד:

<%@page import="com.mysql.jdbc.Connection"%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"
    import="java.sql.*"
    import="com.mysql.jdbc.*"
    import="com.mysql.*"
    %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
</head>
<body>
         <h1> jdbc test</h1>
         <%
        //Class.forName("com.mysql.jdbc.Driver");
        Connection c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test2","root","11235813");
         
      //   Connection c=DriverManager.getConnection(url) 
         %>
         
</body>

</html>


המשפט הבסיסי לא עובד יש בעיות עם הדריבר של ההתחברות ,

אני מקבל מה ide (ECLIPSE

את השגיאה הבאה :

cannot convert from java.sql.Connection to com.mysql.jdbc.Connection
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 10:51
נושא ההודעה:

אז למה אתה עושה import ל-class הזה?

מתוך:
https://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-connect-drivermanager.html
קוד:

// Notice, do not import com.mysql.jdbc.*
// or you will have problems!
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 11:01
נושא ההודעה:

תיקנתי כמה שגיאות :

error in sql_>:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test2?user=root&password=11235813


ג'אווה לך תבין , מצב אחד סביבה באמת חזקה יצרו בה דברים יציבים scalable
בקנה מידה גדול להרבה משתמשים ,

מצד שני מסורבל עם כל כך הרבה "טריקים" תקח את ה קובץ jar משם ותזרוק אותו ב lib
ויש סיכוי שזה פשוט יעבוד או לך תערוך איזה קובץ xml ותכתוב שם כמה הגדרות ..

אני מבולבל מה אני צריך ?

זאת שאלת השאלות
jdbc6.jar או שאני צריך mysql-connector-java-5.0.8-bin

שאלה שניה לשים את זה ב lib של הפרוייקט או לשפוך את זה ב lib של השרת ?
או אולי לשים את זה בתקייה
ולבצע export CLASSPATH=/opt/mylib...123
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 11:24
נושא ההודעה:

המשפט הזה גם לא מתקבל יפה

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


מחזיר לי ClassNotFound

את ה lib שמתי ב lib של אקליפס
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 11:52
נושא ההודעה:

בתור מישהו שמתכנת בעיקר ב-java ב-5 שנים האחרונות אני יכול לומר זו אכן סביבה מאוד מסורבלת, זו אולי אחת הסיבות שמקובל יותר לעבוד עם frameworks למיניהם ולא ישירות עם servlets ו-jdbc ישירות, לניהול תלויות וספריות מקובל להשתמש ב-maven.

יש הבדל בין להעתיק את הקובץ לתוך ספריית ה-lib לבין הוספת הספריה ל-build של הפרוייקט, תסלח לי שאני כבר לא זוכר איך עושים את זה באקליפס.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 12:17
נושא ההודעה:

כן עשיתי את זה דרך ה project->properties->java build PATH
או משהו כזה .


אני אמשיך לעבוד על זה נראה מה יתקדם .


בהקשר של מה שאמרת על framework
סיימתי ללמוד jsp ו servlet אני עכשיו ממשיך ל jsf .

שאני הצליח להבין מה זה בדיוק EJB אז אני חושב זה הרגע בו אולי אתחיל ללמוד את spring framework כרגע אני עוד בחיתולים ....
אבל אגיע לזה מתי שהוא ...
או hibernate שזה אם אני מבין נכון אלטרנטיבה ל JPA java persistance
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/10/2015 - 14:09
נושא ההודעה:

הרבה מהדברים האלה קיימים רק מסיבות הסטוריות ומלחמות ישנות בתוך הקהילה של java. אין הרבה טעם ללמוד את כולם רק כדי לסמן עליהם v.

spring הוא תחליף מלא ל-ejb ול-javaEE בכלל, אין מה ללמוד את שניהם. המילה האחרונה בעולם ה-java הוא ה-playframework אבל לא יצא לי לעבוד איתו.

כמו רוב הדברים בעולם ה-javaEE ה-JPA הוא רק תקן ו-hibernate הוא אחד המימושים שלו (מסביבו למעשה נבנה התקן בזמנו). זו שכבת ORM שתפקידה לדבר עם ה-database ולהחליף את ה-jdbc וה-sql, הוא לא תחליף ל-frameworks שהוזכרו למעלה.

jsf ושאר טכנולוגיות ה-web של java הן גם קצת מיושנות בעיני ולא נראה לי שמישהו מתחיל פרוייקטים חדשים איתן. יותר הגיוני כיום לבנות rest api בסרבר ולבנות קליינט בעזרת ספריות js מודרניות כמו-angular/backbone/react.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 18/10/2015 - 08:45
נושא ההודעה:

הצלחתי .

לגבי mysql ו TOMCAT APACHE
צריך לשים את ה mysql connector/j (קובץ jar)
בתוך נתיב ה $CATALINA
\LIB


עקב התחלפות של JDBC מגרסאות ישנות ל JDBC 4 ומעלה המשפט הזה כבר לא תקף!
קוד:
 Class.forName("com.mysql.jdbc.Driver").newInstance();


במקומו יש לרשום
קוד:
 DriverManager.registerDriver(new com.mysql.jdbc.Driver());




לגבי טכנולוגיות (האורח שדיבר איתי על play framework)

אני עובד כרגע על פרוייקט אפליקצית xmmp לאנדרואיד .
צד הלקוח android native דרך sdk ו java

אני מתעסק בצד של השרת
צד השרת דרך של java שנותן xmpp (בנוי ברובו על servlet ומחלקות וכן Restful jax-rs)
לכן אני לומד servlet\jsp\jax-rs\resteasy בשביל השרת


ב restful יהיו קריאות לפתיחת חדרים \ שליחת קבצים \ בקשות לביצוע פעולות בשרת .
במקביל ישתנו הנתונים במסד הנתונים ויאפשרו פעולות רציונליות (sql) למשתמשים רשומים



השלב הבא מבחינתי (לא קשור לפרוייקט) זה לפתח מערכות web ב java .
אתה ממליץ על play\spring או משהו אחר ? עד היום מאיזה framework אתה מעדיף ל web ?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 18/10/2015 - 08:59
נושא ההודעה:

האליקציה שאנו מתכננים תהיה דומה ל "whatsapp"
אבל עם יכולות\אפשרויות למשתמשים תלויי מיקום (gps) .
ויכולות חברתיות .



whatsapp בעצמם עשו את זה על שרת ejabberd (שרת xmpp שכתוב ב earl lang)


למה java ? , הסיבה לתמוך במספר רב של משתמשים (מעל 4 מליון משתמשים)
אנחנו לוקחים שרת קיים מבוסס java בקוד פתוח וכותבים מחלקות חדשות,
בנוסף רוב המתכנתים בחברה יותר אוריינטלי java מאשר earl .

עדיין השאלה האמיתית האם java ייתן פתרון scalable בקנה מידה גדול ???
או שיש פה משהו שהולך להתפקשש בענק?
לדוגמה whatsapp לך תדע בכמה שרתים הם היו צריכים להשתמש (מחשבים\חומרה)
אולי הם שילמו לחברות שיטפלו להם בניתוב כתובות Akamai ,

אולי הדרך הנכונה זה לכתוב את התוכנה כך שתהיה יכולת קלה להגדרות שרתים נוספים "זהים"
והם ידעו לבצע תקשורת ביניהם ולסנכרן מידע .


אני לא בטוח שהמנהלים בחברה מספיק מבינים על מה הם מדברים , בסופו של דבר אנחנו (מי שכותב את הקוד) צריך לעשות את העבודה ..
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח
  2. אורח [לומבינבג'אווה]
  3. אורח
  4. אורח
  5. אורח
  6. אורח
  7. אורח
  8. אורח
  9. אורח
  10. אורח
  11. אורח
  12. אורח
  13. אורח