Avatar billede johnny_michaelsen Nybegynder
07. december 2003 - 03:06 Der er 9 kommentarer og
1 løsning

data fra Acces til et array

Hey dr...

Skal have en række emailaddresser trukket ud af min database, og smidt ind i et array. Men kan slet ikke få det til at funke.

Er temmelig sikker på, at det er noget med mit arraysjov i bunden. Noget kode jeg fandt et sted, men det funker i hvert fald ikke...

Har følgende kode:
-----------------------------------------------------------

public void onClick(Object Sender, EventArgs e)
{
       
    ArrayList arrMailList = new ArrayList;

    String sConnection;       
    sConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data"        + " Source=" + Server.MapPath("mailList.mdb");
               
    OleDbConnection DbConn;
    DbConn = new OleDbConnection(sConnection);
    DbConn.Open();
       
    String sql;
    sql = "SELECT Email FROM Mailliste";
    DbConn.Close();
        Set DbConn = Nothing;

    OleDbCommand DbCmd;
    DbCmd = new OleDbCommand();
    DbCmd.CommandText = sql;
    DbCmd.Connection = DbConn;
   
    OleDbDataReader DbReader;
    DbReader = DbCmd.ExecuteReader();
   
    Set rs = DbConn.Execute(sql);
        arrMailList = rs.GetRows();
}
----------------------------------------------------------

/Johnny
Avatar billede nielsbrinch Nybegynder
07. december 2003 - 03:40 #1
Får du data ud af Access eller ej?
Avatar billede tjp Mester
07. december 2003 - 03:57 #2
Øh, lukker du ikke forbindelsen, før du overhovedet bruger den til noget?
Avatar billede johnny_michaelsen Nybegynder
07. december 2003 - 12:51 #3
Wuops...

Men stadig ingen reaktion efter DbConn.Close(); og Set DbConn = Nothing; er slettet...

Ja jeg får dataen læst ind i DbReaderen, men skal have det derfra og ind i et array... Det er ikke sikkert det er den rigtige måde jeg har sat det op på!??

Det er syntaksen for at smide data fra DbReaderen og ind i et almindelig array jeg efterlyser! :o)

/Johnny
Avatar billede burningice Nybegynder
07. december 2003 - 12:58 #4
OleDbConnection DbConn = new OleDbConnection(sConnection);
       
    String sql = "SELECT Email FROM Mailliste";
    OleDbCommand DbCmd = new OleDbCommand(DbConn, sql);
    OleDbDataReader DbReader = DbCmd.ExecuteReader(ConnectionBehaviour.CloseConnection);

while (rs.Read()) {
  arrMailList.Add(rs.GetString(0));
}

rs.Close()
Avatar billede burningice Nybegynder
07. december 2003 - 12:58 #5
hov... der hvor der står rs skal der stå DbReader
Avatar billede johnny_michaelsen Nybegynder
09. december 2003 - 00:41 #6
>> cyberfessor

Dette funker ikke---> (ConnectionBehaviour.CloseConnection);

Man skal måske importere et namespace eller noget, har dog bare slettet det!

ArrayList bruger ikke .Add. Den finder selv ud af at tilføje i løkker, men kan sq ikke få den til at køre med følgende kode!??

  while (DbReader.Read())
  {
      arrMailList = (DbReader.GetString(0));
  }
      for(int i; i < arrMailList.Size(); i++)
  {
      liste += arrMailListe[i] + ", ";
  }
      liste += (string)arrMailListe.Size() - 1;
----------------------------------------------------

Får bare denne besked:

Typen 'string' kan ikke implicit konverteres til 'System.Collections.ArrayList'

Og det er på denne linje:

arrMailList = (DbReader.GetString(0));

/Johnny
Avatar billede nielsbrinch Nybegynder
09. december 2003 - 00:51 #7
arrMailList er en instans af ArrayList kan du ikke sætte en lig med en streng. Du kan tilføje sådan:
arrMailList.Add(DbReader.GetString(0));
Avatar billede nielsbrinch Nybegynder
09. december 2003 - 00:52 #8
Der mangler et 'hvis' i starten af min forrige kommentar.
Avatar billede tjp Mester
09. december 2003 - 01:02 #9
>> Johnny

Er du nu helt sikker på at ArrayList ikke benytter Add?

Fra MSDN under 'ArrayList.Add Method':
Adds an object to the end of the ArrayList.
(...)
[C#]
public virtual int Add(
  object value
);

hvor den returnerede int er det tilføjede elements indeks.
Avatar billede magune Nybegynder
02. marts 2004 - 09:07 #10
Arraylist benytter Add - og ethvert type objekt kan indsættes i en arraylist. Problemenet bliver at tage dem ud igen. I det ovenstående ser det udtil at i har fået fat i selve reader-delen, men ideelt set "bør" man lægge hver læst record ind i et objekt af en given klasse (her string), sætte den i arraylisten (vha. Add) - og derefter oprette et array af den korrekt længde og type og kopiere arraylisten over i den. Så er adresserne pænt tilgængelige ...

A la det her

ArrayList myArray = new ArrayList(); // Den finder selv ud af længden undervejs!

PSEUDOKODE: for hver streng a
    myArray.Add( a );

/// oo derefter kopieres hele das molevitten til et strengarray
string[] emailadresser = new string[myArray.Count];
myArray.CopyTo( emailadresser );
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