תאימות עם עברית ב MS SQL SERVER 2008

Integrali

New member
תאימות עם עברית ב MS SQL SERVER 2008

שלום לכולם, יש לי בעיה עם הכנסת ערכים בשפה העברית לDB ב MS SQL SERVER 2008 R2 אני ניגש לDB דרך פרוייקט בC# ולאחר שאני מזין ערכים בעברית, הם נשמרים בצורה של סימני שאלה (????????) אני רוצה לציין שהDataType של השדות הוא nvarchar ובשאילתה אני מזין בהתחלה את האות N לפני המחרוזות, ועדיין משום מה זה לא עובד. אשמח לכל עזרה שלכם. תודה מראש!
 

כלליים

New member
בלי להתמצא

אולי תשנה בלוח הבקרה את קידוד הnon unicode של windows לעברית.
 

Integrali

New member
הקוד

יש לי מחלקה מיוחדת דרכה אני ניגש ל-DB זאת השיטה מתוך המחלקה שאני קורא לה כדי לרשום להזין ב DB
public int sendSQL(String SqlComm) { try { OpenConn(); lock (thisConnection) { SqlCommand command = new SqlCommand(SqlComm, thisConnection); command.ExecuteNonQuery(); return 0; } } catch (SqlException e) { //... return -1; } }​
זאת דוגמא לקריאה לשיטה כזאת:
Error = db.sendSQL("UPDATE tblMeal SET "+ "mealDescription=N'" + mealDescription+"',"+ "mealPrice=" + mealPrice + "," + "mealComponents=N'" + mealComponents + "'," + "mealRecipe=N'" + mealRecipe + "'," + "mealCategory=" + mealCategory+ " WHERE mealID="+mealID);​
עם אנגלית אין שום בעיה אבל כשאני מזין בעברית אז נשמרים סימני שאלה במקום אותיות....
 

גרי רשף

New member
הייתי מציע לפנות לפורום דוט נט

מהמעט מאוד שאני מבין בנושא- זה נראה נכון.
 
משהו בסיסי...

האם ה collation של בסיס הנתונים הוא Hebrew_CI_AS כפי שצריך להיות? והאם אתה מצליח להכניס עברית לטבלה כאשר אתה מנסה ישירות ב DB (לא דרך תוכנית ) ?
 

גרי רשף

New member
הוא ציין שמדובר בשדה NVarchar

סוג נתון כזה אמור לתמוך בעברית. אם הוא ישתמש ב-Varchar אזי את בהחלט צודקת.
 

pitoach

New member
אתה רציני גרי
3 דקות אני כותב הודעה ואז

אני שולח ורואה שהקדמת אותי
* לפחות פירטתי אני חושב לעומק את הנושא וקשר של מקידוד במסד הנתונים לקידוד של האפליקציה... * צריך לחשוב על פיצ'ר לפורום של נעילות או לפחות אזהרה. כשמישהו מתחיל להגיב שיקבל הודעה שמישהו אחר מגיב כרגע כבר להודעה (זה פיצ'ר מאוד קל להוספה)
 

pitoach

New member
העכבר החדש עובד לך טוב דרך אגב?!? הגלילה אצלי

מגמגמת והוא לא נוח לעבודה * אבל היתלהבתי מהרעיון כגג'ט נחמד
 

pitoach

New member
זה בהחלט הכיוון של הבעיה. אבל...

לא חייבים לעבוד בקידוד עברית כשעובדים ביוניקוד. עם זה חייבים להתאים בין הקידוד של הטופס ששולח את הנתונים או בין ה GUI שמציג את הנתונים לבין זה של המסד נתונים ואז נעלמים הסימני שאלה שפשוט נובעים מחוסר התאמה בקידודים. * אני מניח שהוא עובד ב יוניקוד (מקווה לפחות) כי במסד הנתונים הוא הגדיר שדה יוניקוד NVARCHAR ולא שדה VARCHAR. כמו כן כאמור ברמת הקוד הוא הגדיר שרשרת יוניקוד (זה לא אומר שאכן התוכן מקודד ליוניקוד עדיין) * הפתרון של "מתכנתת" ככל הנראה יעבוד אם הוא עובד בשרת IIS המוגדר לעברית (בדרך כלל בשרתים ישראליים) ואין הגדרות מיוחדות אחרות (למשל הקובץ הקונפיגורציה של התוכנית) * נקודה אחרונה כרגע: ניתן ברמת השאילתה לשנות את ה Culture כמובן גם לנתון השונה מזה של מסד הנתונים כולו. ניתן לעבוד בכל שפה במסד הנתונים והוא לא מוגבל חס וחלילה רק לשפה אחת שבו הוא מוגדר. ההגדרה במסד הנתונים מהווה רק ברירת מחדל עבור האלמנטים של מסד הנתונים. אני יכול להרחיב אבל מצאתי כרגע קישור נחמד וטוב הדן גם בצד של ה SQL וגם מעט בצד של ה DOT.NET והקשר: http://www.burch-swm.com/a3.html אם יש שאלות ספציפיות אני אשמח לפרט
 

Integrali

New member
כן

ה-collation הוא אכן Hebrew_CI_AS ואני בהחלט מצליח להכניס ערכים לטבלה בעברית ישירות וזה נשמר ומציג אותם דרך התוכנית בצורה תקינה.
 

Integrali

New member
הצלחתי לפתור את הבעיה... מסתבר שהיתה לי טעות

בקוד. בטעות לא הכנסתי את האות N לפני המחרוזות בכל השאילתות שיש. הכנסתי אותה בשאילתת עדכון אבל לא בשאילתת יצירה ולכן זה לא עובד... תודה לכולם על העזרה
 

pitoach

New member
וכמו שכתבתי צריכה להיות התאמה בין הכנסת

הנתונים להוצאת הנתונים וזה כל הבעיה
כשעובדים בשדה NVARCHAR זה כל מה שצריך להקפיד עקרונית
 
למעלה