Avatar billede curriculum Nybegynder
18. december 2004 - 04:41 Der er 8 kommentarer og
1 løsning

Lave query til array

Jeg er lidt ny i asp.net, men jeg vil gerne have lavet en array af resultat af mine database forespørgsler. Jeg har lavet den lignende kode i Classic ASP, hvor rs.GetRows laver array'en.

Public Function GetRecordsetArray(byval sSQL)
    Dim rs
    Set rs = server.CreateObject("Adodb.Recordset")
    rs.Open sSQL,Connection
    If Not (rs.BOF and rs.EOF) Then
        GetRecordsetArray = rs.GetRows
    End If
    rs.Close
    Set rs = Nothing
End Function

Hvordan kan denne kode laves om til asp.net ?? Så resultatet bliver en array, istedet for f.esk. en datareader...
Men måske skal en datareader til at lave array'en, som i den tidligere ??
Avatar billede erikjacobsen Ekspert
18. december 2004 - 07:06 #1
Du kan blot bruge et DataSet, eller DataTable.
Avatar billede snepnet Nybegynder
18. december 2004 - 12:39 #2
hej curriculum :o)
har du lidt mere info om hvad det er du vil frem til ?
mvh
Avatar billede arne_v Ekspert
18. december 2004 - 20:37 #3
Der er flere muligheder:

- du kan manuelt løbe gennem din DataReader og gemme objekter af din egen klasse
  i en ArrayList

- du kan manuelt løbe gennem din DataReader og gemme i en DataTable

- du kan bruge en DataAdapter til at fylde et DataSet (som indeholder en
  DataTable)
Avatar billede curriculum Nybegynder
19. december 2004 - 13:40 #4
Det jeg vil komme frem til er, f.eks:

arrCust = GetRecordSetArray("SELECT Id,sName,sAddress FROM [table]"), så skal array (arrCust) se følgende ud:

For i=0 To Ubound(arrCust,2)
sCust = "Kunde " arrCust(1,i) & " har Id " & arrCust(0,i) & " og bor " & arrCust(2,i)
Next

Ved at have GetRscordSetArray, som en function i class'en, opnår en slags object orienteret programmering måde.
Avatar billede burningice Nybegynder
20. december 2004 - 03:34 #5
som allerede nævnt, så brug en dataadapter og fyld en table:

DataTable GetTable(string sql) {

  OleDbConnection conn = // din connection;
  OleDbDataAdapter adapter = new OleDbDataAdapter();
  adapter.SelectCommand = new OleDbCommand(sql, conn);

  DataTable dt = new DataTable();
  adapter.Fill(dt);

  return dt;
}


DataTable table = GetTable("SELECT Id,sName,sAddress FROM [table]");

foreach (DataRow row in table.Rows) {
  sCust = "Kunde "+ row[1]  +" har Id "+ row[0] +" og bor "+ row[2];
}
Avatar billede curriculum Nybegynder
20. december 2004 - 23:01 #6
Bortset fra at cyberfessor kode var i C#, så var det pletskud og hvad jeg ville have som svar. Så her kommer lige den rigtige kode, hvis nogen skulle have interesse for det.

Public Function GetRecordsetArray(ByVal sSQL As String)
        Dim Connection As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("Conn"))
        Dim adapter As SqlDataAdapter = New SqlDataAdapter()
        adapter.SelectCommand = New SqlCommand(sSQL, Connection)

        Dim dt As DataTable = New DataTable()
        adapter.Fill(dt)

        Return dt
End Function

--------------------

Dim aManufactor AS DataTable
Dim row As DataRow

aName = GetRecordsetArray("SELECT Id,Name FROM customer ORDER BY Name ASC")
For Each row In aName.Rows
Response.write ("<option value=" & row(0) & ">" & row(1) & "</option>")
Next
Avatar billede curriculum Nybegynder
20. december 2004 - 23:02 #7
Send mig lige et svar cyberfessor...
Avatar billede burningice Nybegynder
24. december 2004 - 04:16 #8
svar :) og god jul
Avatar billede burningice Nybegynder
24. december 2004 - 04:18 #9
fyld dog din DropDownList med DataSource istedet !!

DropDownList ddl = new DropDownList();
ddl.DataMember = "id";
ddl.DisplayMember = "navn";
ddl.DataSource = GetRecordSetArray(...);

this.Controls.Add(ddl);
this.DataBind();
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester