Avatar billede baitianlong Nybegynder
23. oktober 2007 - 11:30 Der er 5 kommentarer og
1 løsning

Database udtraek

Hvis man skal hive forskellige datatyper ud af en database med C#, hvordan skal man saa skrive det optimalt.

----- java ------

ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
  attr1 = rs.getString("attr1");
  attr2 = rs.getInt("attr2");
  attr3 = rs.getTimestamp("attr3");

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

Skal man skrive

attr1 = rs["attr1"].ToString();
attr2 = Convert.ToInt32(rs["attr2"].ToString());

eller hvordan?

For som jeg ser det kan man kun skrive rs.GetInt(2) og bruge indexering og ikke navngivet kolonne.
Avatar billede softspot Forsker
23. oktober 2007 - 11:37 #1
Umiddelbart ville jeg skrive

attr2 = Convert.ToInt32(rs["attr2"]);

men der kan være behov for at kontrollere for NULL (hvis kolonnen i databasen tillader dette). Jeg ved ikke lige om C#-notationen kan bruges i Java, men det ville se nogenlunde således ud:

attr2 = (dr["atrt2"] != DBNull.Value ? Convert.ToInt32(rs["attr2"]) : "");

hvis ellers det er en tom streng du vil have i tilfælde af NULL... :)
Avatar billede neoman Novice
23. oktober 2007 - 13:50 #2
Du kan godt bruge navngivne kolonner - du skal blot selv finde deres ordinal:
http://msdn2.microsoft.com/en-us/library/system.data.idatarecord.getordinal(VS.80).aspx

Hvis du bruger typed data sets , så har du strongly-typed properties og kan referere til dem ved navn, se f.eks. her:http://www.c-sharpcorner.com/UploadFile/rupadhyaya/TypedDataSets12032005021013AM/TypedDataSets.aspx
og ellers http://msdn2.microsoft.com/en-us/library/esbykkzb(vs.80).aspx
Avatar billede arne_v Ekspert
23. oktober 2007 - 16:38 #3
Jeg ville bruge:

rdr = cmd.ExecuteReader();
while(rdr.Read())
{
  attr1 = (string)rs["attr1"];
  attr2 = (int)rs["attr2"];
  // process attr1 og attr2
}

Det giver en exception i tilfaelde af forkerte typer.

brug af .ToString vil i mange tilfaelde skjule fejlen.
Avatar billede arne_v Ekspert
25. februar 2008 - 03:28 #4
Tid at få afsluttet her ?
Avatar billede baitianlong Nybegynder
26. februar 2008 - 15:12 #5
ok, jeg tror typecasting er det rette, naar du anbefaler det, Arne_v.

Men links'ne var da ogsaa interessante, saa i kan smide et svar, folkens.
Avatar billede arne_v Ekspert
26. februar 2008 - 15:21 #6
svar
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