webForumDet fria alternativet

Repeater med många val som ska sparas i db

.NET

5 svar · 351 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

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.

Medlem sedan dec. 19996 522 inlägg
#2

Du kan väll sammla ihop dina svar i någon form av collection, datastruktur, hantera den själv och spara ner alla på samma gång.

Medlem sedan maj 20012 812 inlägg
#3

inspiro skrev:

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..

- M

Medlem sedan sep. 2005673 inlägg
#4

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?

Medlem sedan dec. 19996 522 inlägg
#5

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.

Medlem sedan sep. 2005673 inlägg
#6

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
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)