בעיה בחיבור למסד נתונים דרך ASP - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


ניר.

Recommended Posts


<%
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
  • נוצר
  • תגובה אחרונה

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

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

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

סוג שגיאה:

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 וחבריו) אתה מכניס אותו נקי ללא גרש.

קישור לתוכן
שתף באתרים אחרים

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

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)

קישור לתוכן
שתף באתרים אחרים

ארכיון

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


×
  • צור חדש...