webForumDet fria alternativet

[ASP.NET C#] Problem vid hämtning från databas

.NETur .NET

2 svar · 516 visningar · startad av Sanji

Medlem sedan juli 2009355 inlägg
Frågan#1

Hej, jag har problem med den här koden som är skriven i c#. funktionen SelectQuery returnerar en array med olika data från en databas, all data finns och returneras även då. Dock i slutändan så finns det inte kvar några 'InquiryArticles'.

Någon som kan se vad jag gjort för fel?

public Inquiry GetInquiry(int id)
        {
            this.Connect();
            SqlDataReader reader = this.SelectQuery("*", "inquiryarticles", "inquiryID = " + id.ToString());
            Inquiry tempInquiry = new Inquiry();

            List<KeyValuePair<int, InquiryArticle>> articles = new List<KeyValuePair<int, InquiryArticle>>();

            while (reader.Read())
            {

                InquiryArticle tempinqart = new InquiryArticle();
                tempinqart.ID = int.Parse(reader["inquiryartID"].ToString());
                tempinqart.SubOrder = int.Parse(reader["suborder"].ToString());
                tempinqart.Pieces = int.Parse(reader["pieces"].ToString());
                tempinqart.Notice = int.Parse(reader["notice"].ToString());
                tempinqart.ArticleText = reader["articletext"].ToString();
                tempinqart.RevisionNumber = reader["revnr"].ToString();

                KeyValuePair<int, InquiryArticle> tempArt = new KeyValuePair<int, InquiryArticle>(int.Parse(reader["articleID"].ToString()), tempinqart);
            }
                reader.Close();
            List<InquiryArticle> tempartlist = new List<InquiryArticle>();
            foreach (KeyValuePair<int, InquiryArticle> i in articles)
            {
                InquiryArticle a = i.Value;
                a.Article = Database.Articles.GetArticle(i.Key);
                tempartlist.Add(a);
            }
            
            tempInquiry.Articles = tempartlist.ToArray();

            reader = this.SelectQuery("*", "inquirydata", "ID = " + id);
            reader.Read();
            tempInquiry.Name = reader["name"].ToString();
            tempInquiry.CompanyID = int.Parse(reader["companyID"].ToString());
            tempInquiry.ID = id;

            this.Close();
            return tempInquiry;
        }
Medlem sedan dec. 2004736 inlägg
#2

I din while(reader.Read()) {} så skapar du en InquiryArticle tempinqart som du sedan spara i din KeyValuePair<int, InquiryArticle> tempArt. Problemet är ju dock att båda dessa bara "finns" inne i while-loopen. Alltså, när du kommer ut ur loopen har du inte sparat någonting.

Vad du måste göra är alltså att spara ned tempArt i din lista articles sist i while-loopen:

articles.Add(tempArt);
Medlem sedan juli 2009355 inlägg
#3

hehe tack! jag har suttit och inte sett felet i timmar nu, och så var det så enkelt som så! tack så mycket, nu är jag glad:)

150 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
147 ms — hämta tråd, inlägg och bilagor (db)