Hej! Jag har en repeater som hämtar ett gäng frågor från en db (mellan 10-15 frågor) med en fråga på varje rad. På varje fråga finns dels ett par radiobuttons (med samma goupname) samt en checkbox som används för att svara på frågorna.
Hur sparar man detta på lämpligt sätt i databasen? Måste man loopa igenom repeatern och spara ned varje svar var för sig eller finns det något bättre sätt där man kan spara alal svar direkt i databasen? Blir så många db-anrop tänkte jag.
Måste man loopa igenom repeatern och spara ned varje svar var för sig eller finns det något bättre sätt där man kan spara alal svar direkt i databasen? Blir så många db-anrop tänkte jag.
Det beror på hur din databas ser ut. Du kan ju bara lägga in data i en tabell åtgången, alltså ett INSERT kommand kan bara lägga in data till en tabell. Dessutom så beror det på om det finns relationer mellan de olika svaren, säg att du behöver ID från din databas på första svaret som ett relationsid till det andra svaret.
Rent generellt så skulle jag gjort som erka säger, gör en datastruktur som återspeglar de svar/frågor som du har och sen efter det så spara du ner information från denna struktur till databasen. I många Databaser så kan man ju skicka flera operationer efter varandra i samma koppling. Så du kan göra INSERT...;INSERT...INSERT..; vilket beryder att du kan lägga in data i 3 olika tabeller i samma sqlCommand. Och då ökar du ju prestandan lite..
Jo, jag har lagt användarens svar i en datatable... men det var väl lite det som var frågan, hur sparar man en hel collection med data på en gång? om jag har en datatable med 10 rader, där varje rad i datatablen innehåller ett svar på en fråga och alla svaren kommer att ligga i samma tabell... kan man få in alla svaren då? Ska man dynamiskt bygga upp en massa insert-satser i koden beroende på hur många svar som ska sparas och sen göra db-anropet? Eller går det att lösa med en stored procedure?
Du kan ju lösa det med en stored procedure som tar in en xml-sträng, om du serialiserar ner dina objekt. Alternativt gör som Gladh säger, bygger upp en sträng där du skickar in ; separerad insert-sträng, med flera inserts, om ditt DBMS stödjer det. Men du ska inte vara rädd för att prata med databasen, det är nödvändigt, och oftast blir det inte sådan jävla prestanda hit för att skicka in massa inserts, bara du gör det under samma connection, det är den biten som tar tid, om det inte är komplicerade inserts osv.
Nej, det är superenkla inserts... det är bara två id:n och två bool som ska in i en tabell. Då kör jag en liten snurra som kör en insert i taget under samma connection. Det är ju ingen superkritisk applikation precis... men man vill ju lära sig rätt. :)
Tack för svaren!
260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25