Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212

    [C# ASP.NET] Strano problema di conversione

    Ciao a tutti, mi avvicino a C# da qualche giorno e sto rilevando un po' di problemi con i tipi delle variabili e le loro conversioni.
    Ho provato a creare uno script per la connessione ad un database access... il tutto sta funzionando perfettamente ma sono arrivato ad un punto che non riesco a risolvere.

    L'errore che mi da è il seguente: Specified cast is not valid
    il punto incriminato dello script è indicato in grassetto...

    Spero che qualcuno mi sappia chiarire questo enigma... Garzie!

    Lo script è questo:

    <%@ Page Language = "C#" Debug = "True" %>
    <%@ Import Namespace = "System.Data" %>
    <%@ Import Namespace = "System.Data.OleDb" %>
    <html>
    <head>
    <title>Test C#</title>
    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e)
    {
    string strConn = "Provider = Microsoft.Jet.OleDb.4.0;" + "Data Source = '" + Server.MapPath("Northwind.mdb") + "'";
    OleDbConnection Conn = new OleDbConnection(strConn);
    Conn.Open();

    string myQuery = "Select * From Clienti";

    OleDbCommand Rs = new OleDbCommand(myQuery,Conn);

    OleDbDataReader myReader = Rs.ExecuteReader();

    while (myReader.Read()) {
    for(int x = 0 ; x < myReader.FieldCount ; x++)
    {
    //Questa sotto è la riga incriminata!!!
    Response.Write(myReader.GetString(x) + "
    ");
    }
    }

    myReader.Close();
    Conn.Close();
    }
    </script>
    </head>

  2. #2

    Re: [C# ASP.NET] Strano problema di conversione

    Originariamente inviato da shaone
    Ciao a tutti, mi avvicino a C# da qualche giorno e sto rilevando un po' di problemi con i tipi delle variabili e le loro conversioni.
    Ho provato a creare uno script per la connessione ad un database access... il tutto sta funzionando perfettamente ma sono arrivato ad un punto che non riesco a risolvere.

    L'errore che mi da è il seguente: Specified cast is not valid
    il punto incriminato dello script è indicato in grassetto...

    Spero che qualcuno mi sappia chiarire questo enigma... Garzie!

    Lo script è questo:

    <%@ Page Language = "C#" Debug = "True" %>
    <%@ Import Namespace = "System.Data" %>
    <%@ Import Namespace = "System.Data.OleDb" %>
    <html>
    <head>
    <title>Test C#</title>
    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e)
    {
    string strConn = "Provider = Microsoft.Jet.OleDb.4.0;" + "Data Source = '" + Server.MapPath("Northwind.mdb") + "'";
    OleDbConnection Conn = new OleDbConnection(strConn);
    Conn.Open();

    string myQuery = "Select * From Clienti";

    OleDbCommand Rs = new OleDbCommand(myQuery,Conn);

    OleDbDataReader myReader = Rs.ExecuteReader();

    while (myReader.Read()) {
    for(int x = 0 ; x < myReader.FieldCount ; x++)
    {
    //Questa sotto è la riga incriminata!!!
    Response.Write(myReader.GetString(x) + "
    ");
    }
    }

    myReader.Close();
    Conn.Close();
    }
    </script>
    </head>
    mmm... strano.

    Prova ad aggiungere un ".ToString()". Magari il problema si risolve.
    byz goldfix

  3. #3
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212
    Ho provato con questa stringa:

    Response.Write(myReader.GetString(x.ToString()) + "
    ");

    Mi da questo errore:

    Compilation error.

    CS1502: The best overloaded method match for 'System.Data.OleDb.OleDbDataReader.GetString(int)' has some invalid arguments

    Mi chiedo... dovrebbe essere valido anche solo x visto che è di tipo int?
    Se al posto della variabile inserisco un numero mi funziona...
    Help me!!

  4. #4
    Originariamente inviato da shaone
    Ho provato con questa stringa:

    Response.Write(myReader.GetString(x.ToString()) + "
    ");

    Mi da questo errore:

    Compilation error.

    CS1502: The best overloaded method match for 'System.Data.OleDb.OleDbDataReader.GetString(int)' has some invalid arguments

    Mi chiedo... dovrebbe essere valido anche solo x visto che è di tipo int?
    Se al posto della variabile inserisco un numero mi funziona...
    Help me!!
    no intendevo cosi'
    myReader.GetString(x).ToString();
    byz goldfix

  5. #5
    forse dovresti controllare il valore di myReader
    potrebbe essere null se hai sbagliato qualcosa prima
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  6. #6
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212
    Se faccio scrivere a video myReader.FieldCount mi stampa il numero di colonne contenute nella tabella (11).
    Se eseguo il ciclo in questo modo


    while (myReader.Read())
    {
    for(int x = 0 ; x < myReader.FieldCount ; x++)
    {
    Response.Write(x);
    }
    }


    Mi stampa a video la variabile x del ciclo for per ogni record che trova...
    Non mi pare che ci siano errori...
    sto impazzendoo!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    28
    Probabilmente i non tutti i valori che vuoi stampare a schermo sono stringhe e quindi metodo GetString() per un intero ti da errore.Prova a a stampare i valori di una sola colonna per la quale sai di sicuro che è stringha

    tipo:
    while myReader.Read(){
    Response.Write(myReader.GetString(1));
    }

    per vedere se funziona

  8. #8
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212
    Forse ho capito qualcosa ma mi serve un aiuto su come potrei risolvere...

    In pratica sto inserendo manualmente l'indice a
    myReader.GetString().
    Nella tabella ci sono 10 colonne, quindi l'indice parte da 0 fino a 10
    , e ho scoperto che mi da l'errore Specified cast is not valid sull'indice 6 e 7 soltanto perche' sono le uniche colonne che anno dei campi vuoti all'interno...
    ...Qualcuno ha idea di come potrei risolvere...?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    28
    myReader.GetString(6).ToString();

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    devi proteggere il codice dai valori null (come ti hanno già detto)
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.