Avatar billede grafikeren Nybegynder
27. december 2005 - 12:48 Der er 10 kommentarer og
1 løsning

asp.net fejl (Specified cast is not valid)

Jeg er ny i ASP.NET (C#).

I min void Page_Load(object sender, EventArgs e) henter jeg nolge ting fra en database via følgende kode:

// db forbindelse
        string myConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" +
                        "SERVER=localhost;" +
                        "DATABASE=;" +
                        "UID=;" +
                        "PASSWORD=;";

OdbcConnection con = new OdbcConnection(myConnectionString);´
con.Open();

OdbcCommand cmd = new OdbcCommand("SELECT COUNT(Id) As Total FROM `tabel` WHERE klasseid = '" + Session["klasseid"] + "'", con);
OdbcDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
  FotoalbumAntal.Text = (string)rdr["Total"];
}
             
con.Close();


FEJL:

Exception Details: System.InvalidCastException: Specified cast is not valid.
Line 59:            FotoalbumAntal.Text = (string)rdr["Total"];

Jeg har fundet koden her på siden - tror det var Arnes. Jeg har hørt nogle råd om at man skal bruge ByteFX, men siden ser ud til at være nede.
Avatar billede medions Nybegynder
27. december 2005 - 12:55 #1
Prøv lgie sådan her:
FotoalbumAntal.Text = rdr["Total"].ToString();

//>Rune
Avatar billede grafikeren Nybegynder
27. december 2005 - 12:59 #2
Perfekt! Tak for det. Hvad er forskellen på (string)VAR eller VAR.ToString(); ? Man kan måske kun skrive det sidste.

Har jeg ikke forstået det hele korrekt, hvis jeg skriver én af idéerne med asp.net er at man skiller kode og html ad. Så hvis man skal ha vist noget på html siden, så skal man bruge labels og lignende.
Avatar billede grafikeren Nybegynder
27. december 2005 - 13:01 #3
Hej igen. Skal jeg lukke min cmd eller rdr, hvis det skal være helt korrekt?
Avatar billede arne_v Ekspert
27. december 2005 - 13:56 #4
Du bruger:

string sv = (string)reader[kolonne];

hvis det er en streng og:

int iv = (int)reader[kolonne];

hvis det er et heltal.

I din kode måd et være et heltal men du skal have det konverteret til
en streng, så du kunne have brugt:

FotoalbumAntal.Text = ((int)rdr["Total"]).ToString();

men:

FotoalbumAntal.Text = rdr["Total"].ToString();

virker lige så godt. Den konverterer det der er i rdr["Total"] til sn streng
uden at bekymre sig om hvilken type det er.
Avatar billede arne_v Ekspert
27. december 2005 - 13:56 #5
Du bør principielt close din reader, men når du closer din connection
med det samme som du gør i denne kode, så er den praktiske betydning ikke stor.
Avatar billede arne_v Ekspert
27. december 2005 - 13:58 #6
MySQL firmaet har overtaget ByteFX og provideren er nu tilgængelig fra
http://dev.mysql.com/downloads/connector/net/1.0.html
Avatar billede grafikeren Nybegynder
27. december 2005 - 14:04 #7
Tak arne. Det var alt for nu... :o)
Avatar billede grafikeren Nybegynder
29. december 2005 - 20:20 #8
Hvordan tjekker jeg i min db forbindelse om der findes noget indhold på databasen. Altså om siden er den er end of list (EOF)?
Avatar billede grafikeren Nybegynder
29. december 2005 - 20:21 #9
while (rdr.Read())
{
  //
}

Hvor kan man så lave en sætning, hvis den er EOF?
Avatar billede arne_v Ekspert
29. december 2005 - 20:40 #10
bool noget = false;
while (rdr.Read())
{
    ...
    noget = true;
}
if(!noget)
{
  ...
}

var en mulighed
Avatar billede arne_v Ekspert
29. december 2005 - 20:41 #11
hvis du kun læser 1 række så

if(rdr.Read())
{
    ...
}
else
{
  ...
}
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
Computerworld tilbyder specialiserede kurser i database-management

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