Logo

רד-בורד: ארכיון

ראשי > תיכנות > שליפת נתונים ממסד נתונים בASP.NET

29/10/2013 15:18:33 Admin
התחלתי ללמוד ASP.NET ואני מנסה לשלוף נתונים ממסד הנתונים בCode Behind ולא בעזרת הפקדים השונים.
בינתיים הפתרון שאני משתמש בו הוא:
:SqlConnection cn = new SqlConnection(SqlDataSource1.ConnectionString);
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Table, cn);
using (cn)
{
sda.Fill(dt);
if (dt.Rows.Count != 0)
object[] arr = dt.Rows[0].ItemArray;
}
וכעת כשאני רוצה לשלוף נתון אני עושה:
:arr[ i ].ToString();
כאשר i הוא המקום של הAttribute בטבלה. זאת אומרת שאם נגיד יש לי Attribute שנקרא id והוא הערך הראשון, אז הכתובת שלו בטבלה תהיה 0 ולכן אכתוב arr[0].ToString().

כל הצורת עבודה הזאת נשמעת לי לא הגיונית אבל אני לא מצליח למצוא שום הסבר אחר. האם יש דרך לשלוף נתון מהטבלה לפי שם הAttribute שלו ולא רק לפי המקום שלו בטבלה?[ההודעה נערכה על-ידי Admin ב-29/10/2013 15:23:42]
29/10/2013 23:16:51 ורנון
באיזה דיבי אתה משתמש ?
אני ממליץ לך על הכי פשוט הכי חינם והכי טוב
sql server
מגיע עם ה visual studio
השלב הבא זה איך אתה מייצג את הנתונים שלך בדיבי אל מול אובייקטים שבפרוייקט שלך
בגדול הכי נוח זה שכל טבלה תהיה מחלקה ככה ששורה בטבלה תהיה אובייקט
אחר כך אתה יכול לעשות שליפות linq שזה כמו שליפות רגילות רק ממש בקוד ואל תוך אובייקטים

כשאני אהיה מול המחשב אני אשלח לך לינקים עם מדריכים טובים
בינתיים תחפש בעמוד המדריכים של asp באתר שלהם
שים לב עם איזה גרסא של asp אתה עובד ואיזה גרסא המדריך
בהצלחה חבוב
30/10/2013 02:24:40 Admin
ורנון לא הבנת את השאלה שלי. הבעייה שלי היא לא להתחבר לבסיס הנתונים או ליצור את השאילתה אל הטבלה, אלא איפה שהסתבכתי זה בתוך הקוד לקחת ערך של שדה ספציפי.

בדרך שעבדתי איתה עד כה הכנסתי את כל הרשומה לתוך מערך שמסודר לפי סדר השדות בשאילתת הSQL, ואז פניתי לכל שדה לפי המספר שלו.

מה שחיפשתי זה איך לפנות לכל שדה לפי השם שלו.

בכל מקרה הפנו את תשומת ליבי בפורומי תכנות בתפוז למושג שנקרא DataReader ופתר לי את הבעייה.
הקוד איתו נראה כעת כך:
:
SqlConnection conn = new SqlConnection(SqlDataSource1.ConnectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM Table", conn);
conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

if (reader.HasRows)
{
reader.Read();
object name = reader["name"];
}


כאשר הקוד הזה תואם למקרה בו השאילתת SQL צפוייה להחזיר תוצאה אחת. במידה והיא צפוייה להחזיר מספר תוצאות יש צורך להשתמש בפונקצייה reader.NextResult():

:
SqlConnection conn = new SqlConnection(SqlDataSource1.ConnectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM Table", conn);
conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.HasRows)
{
while (reader.Read())
{
object name = reader["name"];
}
reader.NextResult();
}


MSDN: Retrieving Data Using a DataReader[ההודעה נערכה על-ידי Admin ב-30/10/2013 02:29:22]
30/10/2013 07:57:18 ורנון
הבנתי מה אתה אומר

אתה משתמש בasp טהור או בmvc למיניהם ?
עמודים: 1