02. november 2003 - 15:29
Der er
8 kommentarer og 2 løsninger
Skal hente forskellige rækker fra ms sql
Jeg har denne procedure i db: CREATE Procedure hentEnkeltVare ( @varenr int ) AS SELECT v.navn, v.enhed, vt.navn as type, v.pris, v.billedNavn FROM vare as v,varetype as vt WHERE v.type=vt.typenr and varenr=@varenr GO Og jeg kan hente den via metoden: public static SqlDataReader hentEnkeltVare(int vareNr) { SqlConnection sqlConnection = Util.Connect(); SqlCommand sqlCommand = new SqlCommand("hentEnkeltVare",sqlConnection); sqlCommand.CommandType = CommandType.StoredProcedure; SqlParameter parameter = new SqlParameter("@varenr", SqlDbType.Int, 4); parameter.Value = vareNr; sqlCommand.Parameters.Add(parameter); sqlConnection.Open(); SqlDataReader result = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection); return result; } Problemet er nu at jeg skal hente flere varer fra db på en gang, hvordan gør jeg lige det? Dvs hvis jeg f,eks vil hente vareNr 1,3,6,8,9 fra db på engang og returnere en SqlReader?
Annonceindlæg fra HP
02. november 2003 - 17:43
#1
Jeg ville droppe stored procedure og lave en almindelig select med: SELECT v.navn, v.enhed, vt.navn as type, v.pris, v.billedNavn FROM vare as v,varetype as vt WHERE v.type=vt.typenr and varenr IN (1,3,6,8,9); Den sidste laves ved at opbygge en SQL string dynamisk.
02. november 2003 - 20:18
#2
Det er en skole opgave arne og jeg skal bruge stored procedure. Desuden er den sql sætning heller ikke dynamisk, du skal tænke på at de forskellige varenumre skifter hele tiden...
02. november 2003 - 20:26
#3
Du kan opbygge den dynamisk med string sql = "SELECT ... IN ("; for(int i = 0; i < n; i++) { if(i > 0) sql += ","; sql += a[i]; } sql += ");";
02. november 2003 - 20:28
#4
Men det skal altså være en SP. Hm. Så vidt jeg har SP's altid et fast antal argumenter af simpel type. Men det er muligt at jeg tager fejl. Men ihvertfald synes jeg ikke at en SP passer til problemet.
02. november 2003 - 20:43
#5
Din sql ville nok virke hvis det ikke var fordi jeg kørte Sp, men det kan en database altså ikke klare som en SP.
02. november 2003 - 20:46
#6
Du kan lave en SP med 10 eller 20 argumenter som har default NULL og så kan din SP lave SELECT udfra hvormange der er NULL. Men det er da så grim en løsning som jeg ved ikke hvad. Formentlig bedre bare at kalde den SP flere gange.
02. november 2003 - 20:47
#7
altså din eksisterende
03. november 2003 - 16:03
#8
hvorfor sender du ikke bare dine værdier til din SP som en kommasepereret tekst streng. Det vil løse dit problem.
16. november 2003 - 22:18
#9
Lukke tid ?
11. december 2003 - 11:57
#10
.
Computerworld tilbyder specialiserede kurser i database-management