כותב |
|
1crow משתמש פעיל
הצטרף / הצטרפה: 28 April 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 115
|
נשלח בתאריך: 29 April 2007 בשעה 12:07 | | IP רשוּם
|
|
|
|
שלום, אני משתמש בOleDb ע"מ לגשת לבסיס נתונים של Access. אם אני רוצה לבצעה פקודת insert, איך זה יראה? איפה אני יכול למצוא דוגמא לזה(רק אל תגידו גוגל כי ממש לא הולך לי איתם)? תודה.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 29 April 2007 בשעה 12:56 | | IP רשוּם
|
|
|
|
http://www.google.co.il/search?q=sql+insert&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&cl ient=firefox-a
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
1crow משתמש פעיל
הצטרף / הצטרפה: 28 April 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 115
|
נשלח בתאריך: 29 April 2007 בשעה 14:00 | | IP רשוּם
|
|
|
|
עוד פעם כנראה לא הסברתי טוב ת'בעיה :(
הבעיה היא שיש לי משפט של Select עם שימוש בOleDb, ואני צריך אותו דבר, רק עם Insert.
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("db1.mdb"));
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = " select name from users where Name='" + Uname.Text + "' and Password='" + password.Text + "'";
con.Open();
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
nid = reader.GetString(0);
reader.Close();
con.Close();
Server.Transfer("system.aspx");
}
else
{
Label3.Visible = true;
reader.Close();
con.Close();
}
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 29 April 2007 בשעה 15:52 | | IP רשוּם
|
|
|
|
אני שמח שנזכרת לפרט שפה ומה אתה מחפש [חוקי הפורום].
קוד:
OleDbCommand cmd = new OleDbCommand("INSERT INTO tbl_name(fields) VALUE(values)", conn); int rows = cmd.ExecuteNonQuery(); if (rows == 1) //ok else // data was not saved |
|
|
כמובן עדיף לעשות זאת עם stored procedure, ואז אתה יכול לעבוד עם cmd.CommandType=... ו-cmd.Parameters
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
1crow משתמש פעיל
הצטרף / הצטרפה: 28 April 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 115
|
נשלח בתאריך: 30 April 2007 בשעה 01:38 | | IP רשוּם
|
|
|
|
היי, מצטער על כל השאלות אך עדיין יש בעיה :(
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("db1.mdb"));
OleDbCommand cmd = new OleDbCommand(" insert into Users(Name,Password,First,Second,Email,Company,Cadd,Cdet) VALUES ('Name','Password','First','Second','Email','Company','Cadd','Cdet')", con);
int rows = cmd.ExecuteNonQuery(); ההודעת שגיעה שהוא נותן לי היא: ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
Description: An
unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the
error and where it originated in the code.
Exception Details: System.InvalidOperationException:
ExecuteNonQuery requires an open and available Connection. The
connection's current state is closed
מה לא בסדר עם מה שכתבתי או מה שכחתי לכתוב?
|
חזרה לתחילת העמוד |
|
|
1crow משתמש פעיל
הצטרף / הצטרפה: 28 April 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 115
|
נשלח בתאריך: 30 April 2007 בשעה 01:40 | | IP רשוּם
|
|
|
|
אני שולט די טוב בSQL אך אני די לא מבין איך לשלב את זה בC# או איפה אני קורא על זה בהרחבה? אני משתמש בOleDB.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 30 April 2007 בשעה 12:07 | | IP רשוּם
|
|
|
|
זה כ"כ פשוט, אין ממש מה לקרוא אולי כמה דוגמאות קוד פשוטות.
שם לב שלא פתחת connection (הודעת שגיאה מאוד ברורה)
תוסיף
con.Open();
יש שאילתות שמחזירות מידע, אתה משתמש ב- OleDbDataAdapter כדי לקבל מהן מידע, ואז בו כדי לשים את המידע ב-dataTable או dataSet.
יש שאילתות שמחזירות רק מספר או ערף אחד, בשבילהן אפשר להשתמש ב-cmd.ExecuteScalar();
ויש שאילתות שרק אמורות לעדכן את המידע, ולא מחזירות מידע מהמסד, בשבילהן משתמשים ב-cmd.ExecuteNonQuery(); שמחזיר את מספר השורות שעודכנו.
ונוסף על כל זה ב-OleDbCommand יש אפשרות לקבוע שזאת stored procedure ע"י cmd.CommandType = CommandType.StoredPorocedure ואז במקום להעביר SQL אתה מעביר את שם ה-SP ואחרי זה מוסיף פרמטרים ואת ערכיהם ע"י cmd.Parameters.Add();
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
1crow משתמש פעיל
הצטרף / הצטרפה: 28 April 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 115
|
נשלח בתאריך: 30 April 2007 בשעה 14:38 | | IP רשוּם
|
|
|
|
עדיין,שניתי את המשפט ל (בדקתי אם הפקודת insert תקינה והיא אכן מתבצעת אם מריצים אותה על בסיס נתונים אז הבעיה חייבת להיות בOleDB), מה לא עשיתי נכון הפעם?
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("db1.mdb"));
OleDbCommand cmd = new OleDbCommand(" insert into Users(Name,Password,First,Second,Email,Company,Cadd,Cdet) VALUES ('Name','Password','First','Second','Email','Company','Cadd','Cdet')", con);
con.Open();
int rows = cmd.ExecuteNonQuery();
con.Close();
והerror שיוצא לי הוא
Syntax error in INSERT INTO statement.
Description: An
unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the
error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 30 April 2007 בשעה 16:21 | | IP רשוּם
|
|
|
|
Name זו מילה שמורה, או שתשים אותה בין סוגריים מרובעים ( [Name] ) או שתחליף את שם העמודה.
לרשימת מילים שמורות:
קישור
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
יוליה בלנובסקי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 29 November 2008 בשעה 20:11 | | IP רשוּם
|
|
|
|
גם לי יש את הבעיה
Syntax error in INSERT INTO statement. על הפונקציה : ExecuteNonQuery();
ואין לי מילים שמורות.
public void MotorsLogin(string motorscon)
{
string motorins;
OleDbConnection connectionMotor = new OleDbConnection(motorscon);
motorins = "INSERT into Tbl_Motor([NameM], Nefah, Year, Yad, Cost1, Count1, Sog, Degem) Values ('" + NameM + "','" + Nefah + "','" + Year + "','" + Yad + "','" + Cost1 + "','" + Count1 + "','" + Sog + "','" + Degem + "')";
OleDbCommand build = new OleDbCommand(motorins, connectionMotor);
connectionMotor.Open();
build.ExecuteNonQuery();
connectionMotor.Close();
}
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 29 November 2008 בשעה 20:19 | | IP רשוּם
|
|
|
|
year זאת פונקציה (צריך לשים בסוגריים מרובעים)
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|