29. januar 2008 - 09:34Der er
11 kommentarer og 1 løsning
arraylist --generel hjælp
har en arraylist jeg kan godt læse den ind i listbox osv. men jeg kan ikke splitte data så jeg kan manipulere med dem inden jeg læser dem ind i listen. Er der en der kan give mig lidt råd/vejld.
ArrayList List = DataAccessWrite.reader("Select * From konkurrence_tbl");
for (int i = 0; i < List.Count; i++) { string [] t; string t1; string t2; string t3;
t = List[i].ToString ; t1 = t.Split(",")[0]; //this.checkedListBox1.Items.Add(List[i]);
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
public static ArrayList reader (string tabel) //man kan kun angive hele tabeller ,da where også videre kan laves ved sortering etc.
{
//create the database connection OleDbConnection aConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\skytte\\skytte.mdb");
//create the command object and store the sql query OleDbCommand aCommand = new OleDbCommand(tabel, aConnection); ArrayList list = new ArrayList(); try { aConnection.Open();
//create the datareader object to connect to table OleDbDataReader aReader = aCommand.ExecuteReader(); //Console.WriteLine("This is the returned data from table"); int t;
int n = aReader.FieldCount; string line; //Iterate throuth the database while(aReader.Read()) { line =""; t = 0; //MessageBox.Show (aReader.GetString(1)); while (n != t) { if (line == "") { line = (aReader.GetValue(t).ToString()); } else { line = line + "," + (aReader.GetValue(t).ToString()); } t++;
} list.Add(line); }
//close the reader aReader.Close();
//close the connection Its important. aConnection.Close();
Det er ikke ligeså generisk, men hvis du _ved_ at der er tre felter pr. record og kender datatypen kunne du vel omskrive til :
aConnection.Open();
//create the datareader object to connect to table OleDbDataReader aReader = aCommand.ExecuteReader();
//Iterate throuth the database while (aReader.Read()) { string line = string.Format("{0},{1},{2}", aReader.GetString(0), aReader.GetString(1), aReader.GetDateTime(2).ToShortDateString());
Jeg ville til enhver tid vælge at manipulere data så tæt på datakilden som muligt.
Når du smider alle dine data ind som strenge i en ArrayList har du jo strippet dem for al typeinformation.
Men hvis du helst vil gøre det sådan kan det sagtens lade sig gøre.
for (int i = 0; i < List.Count; i++) { string[] t = List[i].ToString().Split(","); //String array fra element i listen DateTime dt = DateTime.Parse(string[2]); //Læs sidste streng som DateTime t[2] = dt.ToShortDateString(); //Sæt den korte strengrepresæntation tilbage i listen List[i] = string.Join(",", t); //Opdater element i listen }
Jeg vil så stadig mene at du ville være bedre tjent med en List<string> fremfor din arraylist, da du så slipper for at skulle ToString'e når du piller objekter ud af den...
..jeg kan ikke afvise at list<string> er bedre , fik bare at vide herinde (faktisk) at arraylist var bedre(da Arb jeg med txt filer.) men er lidt i tidspress og kan ikke lige overskue at bruge adnet :-) lige pt
Error 1 The best overloaded method match for 'string.Split(params char[])' has some invalid arguments Error 2 Argument '1': cannot convert from 'string' to 'char[]'
åh ja min fejl... prøv List[i].ToString().Split(',');
ArrayLists er på ingen måde bedre end generiske Lists. Generiske lists er både hurtigere og mindre memory-tunge end ArrayLists
Nu propper du så vidt jeg kan se kun strings i den, og så vil List<string> absolut være et pænere valg.
Så længe du opererer med reference types er ArrayList ikke helt skidte. Hvis du derimod fyldte ints eller floats i den ville du skulle box'e og unbox'e hver gang du tog elementer ind og ud. her ville en typed collection (List<int>) langt være at foretrække.
Det eliminerer alt andet lige også en række potentielle fejl at bruge en typesikker collection. Med en ArrayList har du jo i princippet ingen garanti for at det rent faktisk er strings der ligger i den...
Hvis du er i bekneb med tid kan du sagtens fortsætte med din ArrayList. Men tag og kig lidt på List<T> når du engang får tid...
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.