פורסם 2006 בספטמבר 2019 שנים אני מנסה באחד הפרוייקטים שאני מתכנת ב asp.net להכניס אל תוך שדה מסוג DateTime בבסיס הנתונים שלי שהוא MS SQL SERVER את הערך של הזמן והתאריך הנוכחי באמצעות השיטה/פונקציה DatwTime.Now אך לצערי משפט ה SQL שלי נופל ופעולת ה insert לא מתבצעת."insert into mytable(userid,edittime) values('3232'," & DateTime.Now() & ")"נסתי גם לתחום את זה בגרשים כאילו זה ערך מחרוזתי וגם זה לא עזר.כיצד אני יכול לעשות זאת באופן שזה כן יעבוד ויקבל את התאריך והשעה ויכניסם לבסיס הנתונים? ???אגב בהתחלה עשיתי זאת אוטומאטית בצד ה SQL SERVER ע"י שימוש בפונקציה gatdate המובנת אך לצערי זה לא הכי מתאים לי בגלל ששרת ה SQL שלי הוא לא אותו שרת שעליו יושב IIS ועל כן יתכן וישנם הפרשי זמנים ביניהם מה שמהווה לי בעיה בהמשך הקוד שאני כותב.כמו כן מדובר על שרתים שיתופיים היושבים בחברת איחסון כך שגם אין לי יותר מידי אפשרויות שליטה עד לרמות האלו של ההגדרות הפיזיות בשרתים.אודה לעזרתכם בנידון,חיפושי בגוגל לצערי לא הועילו ולא עזרו אבל אולי אתם כן.ואסיים זאת בברכת שנה טובה לכל חברי הפורום ומשפחותיהם ולכל בית ישראל ועם ישראל.
פורסם 2006 בספטמבר 2119 שנים תנסה"insert into mytable(userid,edittime) values('3232','" & DateTime.Now() & "')"כיאלו תיתחום את התאריך בגרשים אם זה לא עובד תיתחומם את התאריך בסולמיות #בהצלחה
פורסם 2006 בספטמבר 2119 שנים הגישה שלך כולה מוטעית בדרך שאתה מעדכן database מתוך קוד ב- ASP.NETעדיף שתשתמש בקלאסים DataSet , SqlDataAdapter ו- SqlCommand על מנת לבצע עדכונים
פורסם 2006 בספטמבר 2219 שנים מחבר בסוף פתרתי את הבעיה בדרך אחרת.הגישה שלך כולה מוטעית בדרך שאתה מעדכן database מתוך קוד ב- ASP.NETעדיף שתשתמש בקלאסים DataSet , SqlDataAdapter ו- SqlCommand על מנת לבצע עדכוניםלדבריך אלו הם הכן קלאסים ואובייקטים לטיפול בנתונים וחיבור לבסיס נתונים מסוג SQL SERVER אבל בסוף גם כשאני עושה בהם שימוש כי בשורה התחתונה אין ממש דרך אחרת אתה מגיע לכך שאתה כותב שאילתת SQL עם זה לשליפה ואם זה לעדכון/מחיקה/הוספה.
פורסם 2006 בספטמבר 2219 שנים לא נכוןאם תרצה אוכל להסביר לך יותר בפירוטאבל הרעיון בגדול היא להציא מהקוד שלך כל משפט SQL שהואולאחסן אותם ב- database כ- Stored Procedures
פורסם 2006 בספטמבר 2419 שנים ב- Database שלך אתה כותב את ה- Stored Procedure שלך , למשל לפי הדוגמא שהצגת:CREATE PROCEDURE InsertIntoTable1 ( @userid int, @edittime datetime )AS insert into table1 ( userid, edittime ) values ( @userid, @edittime ) RETURNוהקוד שלך יראה משהו כזה: public static void AddUser(int userid) { SqlConnection cn1 = new SqlConnection("server=myserver;database=mydb;Integrated Security=SSPI"); SqlCommand cmd1 = new SqlCommand("InsertIntoTable1", cn1); cmd1.CommandType = System.Data.CommandType.StoredProcedure; cn1.Open(); SqlCommandBuilder.DeriveParameters(cmd1); cmd1.Parameters["@userid"].Value = userid; cmd1.Parameters["@edittime"].Value = DateTime.Now; int hr = cmd1.ExecuteNonQuery(); cn1.Close(); }לא רציתי לסבך אותך עם דוגמא שכוללת SqlAdapter ו- DataSets , אלה מתאימים יותר לאופי עבודה באצווה (אם אתה מכיר את המילה או batch בלעז)כלומר שלמשתמש יש מסך בו הוא עושה הרבה עדכונים מבלי להתחבר ל- database לוחץ על איזשהו כפתור save ורק אז כל השינויים שלו נשמרים
פורסם 2006 בספטמבר 2419 שנים מחבר וזה נראה לך הגיוני שעבור כל שאילתה שאני רוצה לבצע אם זה שליפה ואם זאת הכנסה אני אכתוב stored procedure?במקום לבצע את השאילות ישירות מה ASP.NET מתי והיכן שאני צריך?אני משתמש בקלאס הבא שכתבנו בפרוייקט.Public Class sqlstatement Public Shared Function sqlret(ByVal sqlstring As String) Dim constr As String = ConfigurationSettings.AppSettings("connstring") Dim dbconn As New SqlConnection(constr) Dim myadapter As New SqlDataAdapter(sqlstring, dbconn) dbconn.Open() Dim ds As New DataSet myadapter.Fill(ds) dbconn.Close() Return ds End Function Public Shared Function sqlins(ByVal sqlstring As String) Dim constr As String = ConfigurationSettings.AppSettings("connstring") Dim dbconn As New SqlConnection(constr) dbconn.Open() Dim mysqlcommand As New SqlCommand(sqlstring, dbconn) mysqlcommand.ExecuteNonQuery() mysqlcommand.CommandText = "SELECT SCOPE_IDENTITY()" Dim id As String = Convert.ToString(mysqlcommand.ExecuteScalar()) dbconn.Close() Return id End FunctionEnd ClassImports System.Data.SqlClient
פורסם 2006 בספטמבר 2419 שנים וזה נראה לך הגיוני שעבור כל שאילתה שאני רוצה לבצע עם זה שליפה ואם זאת הכנסה אני אכתוב stored procedure?במקום לבצע את השאילות ישירות מה ASP.NET מתי והיכן שאני צריך?זה לא שלכל שאילתא אתה צריך לכתוב SPלכל סוג של שאילתא שאתה משתמש בה אתה מכין SP ופשוט מכניס לה את המשתנים הרלוונטים.מה שכן, להכנסה של שורה בודדת באמת אין צורך ב-SP. בעיקר משתמשים בזה כאשר אתה רוצה לבצע פעולות מיון מסובכות ולשלוף רק את המידע הרלוונטי.
פורסם 2006 בספטמבר 2419 שנים מחבר אני מסכים שהכן שאילתות מסובכות הכן עדיף לפעמים לעשות בצד שרת ה SQL באמצעות SP מאשר דרך ה ASP.NET אבל לא עבור כל שאילתה להשתמש ב SP.
פורסם 2006 בספטמבר 2419 שנים אני מסכים שהכן שאילתות מסובכות הכן עדיף לפעמים לעשות בצד שרת ה SQL באמצעות SP מאשר דרך ה ASP.NET אבל לא עבור כל שאילתה להשתמש ב SP.תקרא קצת על נושא שנקרא SQL Injection ותבין למה לא מומלץ לשים משפטי SQL בתוך הקוד המקומפל
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.