עבור לתוכן

בעיה בחיבור למסד נתונים דרך ASP

Featured Replies

פורסם


<%
if session("iao")="no" Then
response.redirect("admin.html")
end if
%>
<HTML>
<HEAD>
<TITLE>עדכון</TITLE>
</HEAD>
<BODY>
<%
'======= שליפת נתוני המשתמש מהטופס =======
username = Request.Form("username")
password = Request.Form("password")
firstname = Request.Form("firstname")
lestname = Request.Form("lestname")
sex = Request.Form("sex")
age = Request.Form("age")
street = Request.Form("street")
homenumber = Request.Form("homenumber")
city = Request.Form("city")
more = Request.Form("more")

'======= חיבור למסד הנתונים ופתיחתו =======
Set con = Server.CreateObject("ADODB.connection")
con.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/members.mdb"))



'=========== בדיקה האם כבר קיימת רשומת משמתמש בטבלה ==========
sqlSelectCmd = "SELECT * FROM users WHERE username='" & username & "'"
Set rec = con.Execute(sqlSelectCmd)

If (rec.EOF = True) Then
'======= החזרת תשובה ללקוח שפעולת העדכון לא בוצעה כי לא קיים משתמש כזה =======
Response.Write("<html><body dir='rtl'><h1><center>משתמש לא קיים בטבלה!</center></h1></body></html>")
Else
'======= בניית הפקודה לעדכון נתוני המשתמש בטבלה =======
sqlCmd = "UPDATE users SET firstname='" & firstname & "',lestname='" & lestname & "',age='" & age & "',sex='" & sex
sqlCmd = sqlCmd & "',password='" & password & "',street='" & street & "',homenumber='" & homenumber& "',city='" & city
sqlCmd = sqlCmd & "',more='" & more & "' WHERE username='" & username & "'"

'======= עדכון רשומת המשתמש בנתונים =======
con.Execute(sqlCmd)
'Response.Write(sqlCmd)
'======= החזרת תשובה ללקוח שפעולת העדכון בוצעה בהצלחה =======
Response.Write("<html><body dir='rtl'><h1><center>נתוני המשתמש עודכנו בהצלחה!</center></h1></body></html>")
End If

'======= סגירת מסד הנתונים =======
rec.Close()
con.Close()
%>
</BODY>
</HTML>

השורה הבעעיתית :

con.Execute(sqlCmd)

כאשר אני מריץ את הקוד הנ"ל אז עולה לי שגיאה בשורה המודגשת...

מה הבעיה בשורה המודגשת וכיצד פותרים אותה ?

  • תגובות 90
  • צפיות 9.7k
  • נוצר
  • תגובה אחרונה

משתתפים בולטים בדיון

פורסם

תרשום את הודעת השגיאה שאתה מקבל.

פורסם
  • מחבר

הוא רושם לי שהשורה לא תקינה ואני לא הבנתי למה...?

אתה רוצה את הנוסח המדויק שהוא נותן?

פורסם

חיובי, תעתיק את כל מה שהוא רושם לך.

פורסם
  • מחבר

השגיאה המוצגת :

סוג שגיאה:

Microsoft JET Database Engine (0x80040E14)

‏‏שגיאת תחביר במשפט UPDATE.

/mySite/update.asp, line 44

מה השגיאה אומרת וכיצד אני פותר אותה..?

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

פורסם

על פניו השאילתא נראת נכונה.

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

תנסה לשים את המילה table בין המילה update לשם הטבלה שלך.

אם זה לא עוזר תבדוק אולי אתה מנסה להכניס מחרוזת לשדה שהוא בכלל integer.

פורסם
  • מחבר

על פניו השאילתא נראת נכונה.

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

1.תנסה לשים את המילה table בין המילה update לשם הטבלה שלך.

2.אם זה לא עוזר תבדוק אולי אתה מנסה להכניס מחרוזת לשדה שהוא בכלל integer.

איך אני בודק את סוג המחרוזת / המשתנה ?

למה אתה מתכוון ב-1 ?

פורסם

1. ...UPDATE table users

2. במסד נתונים שלך.

אם אתה משתמש ב mdb של אקסס תפתח את הטבלה במצב עיצוב ושם אתה יכל לראות את סוגי השדות.

אם השדה מחרוזת (String) אתה מכניס אליו נתונים עם גרש בכל צד, אם הוא מספר (Integer וחבריו) אתה מכניס אותו נקי ללא גרש.

פורסם
  • מחבר

כן הסוג במסד הנתונים הוא טקסט כלומר STRING....

אבל זה בכל זאת לא עובד ..

מה עושים כדי לתקן את זה...?

פורסם

תנסה להשתמש בחיבור הזה (תחליף את השמות והמסלולים בהתאם לתוכנית שלך):

SET objConn = Server.CreateObject("ADODB.Connection")
strDbPathAndName =server.MapPath("\") & "\db.mdb"
strConn = "DBQ="+strDbPathAndName+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=80;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"

פורסם
  • מחבר

זה מה שעשיתי..

תבדוק שום את הקוד שלי בחלק כמו שאתה רשמת ואם זה לא תקין תכתוב לי בבקשה כך שזה יהיה תקין.....?

פורסם

משפט ה- update שלך פגיע להתקפות משתמשים מתוחכמים

למשל אם משתמש יזין בטופס שלך טקסט עם גרש הוא יפיל את הדף ויוכל לראות את הקוד שלך

יכול להיות שה- update עובד לפעמים ולא יעבוד במקרים מסויימים

יכול להיות שאתה כרגע רץ על מקרה שבו פרטי המשתמש שאתה מנסה לעדכן מכילים תווים שמורים כמו גרש

ואז כל משפט ה- update שלך משתבש

לפני פקודת ה- execute תכניס response.write של משפט ה- update כפי ש- access מנסה לפענח

פורסם
  • מחבר

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

האם לזה התכוונת ?

אם לא למה התכוונת וכיצד אני יעשה זאת ?

פורסם

את פקודת ה- Execute שים ב- הערה כלומר לא לביצוע

לפניה שים את משפט ה- write של משפט ה- update

חשוב שתריץ בדיוק על אותו מקרה שבו היתה השגיאה, כמו שאמרתי קודם יכול להיות שהשגיאה תופיע רק במקרים מסויימים.

שום עדכון לא אמור להתבצע וגם לא שגיאה, אתה אמור רק לראות את משפט ה- update הסופי כפי שאתה שולח ל- access


Response.Write(sqlCmd)
'con.Execute(sqlCmd)

פורסם

תבדוק שאתה לא שולח לו ' באחת מהמחרוזות.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים