Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di DeR
    Registrato dal
    Mar 2003
    Messaggi
    975

    Asp Net+C# problemi connessione al db

    Sto cercando di migrare da asp ad asp net, ma sto avendo un milione di problemi.

    Da un libro ho trovato quest'esempio, ma non funziona, mi sapete dire dove sbaglio? vi prego!

    <%@ Page Language="C#" %>
    <%@ import Namespace="System" %>
    <%@ import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">
    OleDbConnection mdbConnection = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=C:\db_prova.mdb");

    try
    {
    mdbConnection.Open();
    }
    catch
    {
    Response.Write("Impossibile Aprire una connessione con il Database");
    }

    OleDbCommand _OleCmd = new OleDbCommand("SELECT * FROM tb_utenti", "mdbConnection");

    System.Data.OleDb.OleDbDataReader dr = _OleCmd.ExecuteReader();

    if(dr.HasRows){
    while(dr.Read()){
    Response.Write("Utente : " + dr["nome"] + " Cognome : " + dr["cognome"] + "
    ");
    }
    }

    dr.Close();

    if(mdbConnection.State != System.data.ConnectionState.Closed){
    mdbconnection.close();
    }
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
    </body>
    </html>
    Ciao DeR

  2. #2
    A colpo d'occhio direi :

    OleDbCommand _OleCmd = new OleDbCommand("SELECT * FROM tb_utenti","mdbConnection");

    Sostituisci con

    OleDbCommand _OleCmd = new OleDbCommand("SELECT * FROM tb_utenti", mdbConnection);

    ciauzzz

  3. #3
    Utente di HTML.it L'avatar di DeR
    Registrato dal
    Mar 2003
    Messaggi
    975
    Purtroppo c'era anche un altro errore, ma cmq non funziona


    <%@ Page Language="C#" %>
    <%@ import Namespace="System" %>
    <%@ import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">
    OleDbConnection mdbConnection = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=C:\db_prova.mdb");

    try
    {
    mdbConnection.Open();
    }
    catch (Exception Ex)
    {
    Response.Write("Impossibile Aprire una connessione con il Database");
    }

    OleDbCommand _OleCmd = new OleDbCommand("SELECT * FROM tb_utenti", mdbConnection);

    System.Data.OleDb.OleDbDataReader dr = _OleCmd.ExecuteReader();

    if(dr.HasRows){
    while(dr.Read()){
    Response.Write("Utente : " + dr["nome"] + " Cognome : " + dr["cognome"] + "
    ");
    }
    }

    dr.Close();

    if(mdbConnection.State != System.data.ConnectionState.Closed){
    mdbconnection.close();
    }
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
    </body>
    </html>
    Ciao DeR

  4. #4
    qui puoi trovare documentazione direttamente da mamma microsoft
    http://tinyurl.com/729pw
    in ogni caso se dicessi l'errore preciso sarebbe utile.
    Per questa ragione puoi anche togliere eventuali gestione di errori (try) che nascondono il messaggio preciso dell'errore.
    Poi, quando si legge un datareader, e' sempre meglio stare attenti agli eventuali valori null usando ad esempio isdbnull e in piu' e' utile usare le funzioni del datareader che convertono automaticamente il valore nel tipo giusto es.
    codice:
    If (!IsDBNull(tuodatareader["campo"]) { tuavar = tuodatareader.getstring["campo"];}
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova con:
    codice:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    	
    	
    	private const string StringaConnessione = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dati\test\test.mdb";
    	protected void Page_Load(object sender, EventArgs e)
    	{
    		OleDbConnection con = null;
    		OleDbCommand comand = null;
    		OleDbDataReader reader = null;
    		StringBuilder sb = new StringBuilder(1000);
    		
    		string sql = "SELECT * FROM CAMPI";
    		
    		try
    		{
    			//istanzio la connessione
    			con = new OleDbConnection(StringaConnessione);
    			
    			//apro la connessione
    			con.Open();
    
    			//creo comando
    			comand = new OleDbCommand(sql, con);
    			
    			//creo il reader
    			reader = comand.ExecuteReader();
    			if (!reader.HasRows)
    			{
    				lbl1.Text = "Non ci sono record"; return;
    			}
    			
    			while (reader.Read() )
    			{
    				sb.Append(DBNullToString(reader["testo"]));
    				sb.Append("
    ");
    			}
    			lbl1.Text = sb.ToString();
    		}
    		catch (Exception ex)
    		{
    			lbl1.Text = ex.ToString();
    		}
    		finally
    		{
    			if (reader != null) reader.Close();
    			if (con != null) con.Close();
    		}
    	}
    	
    	public string DBNullToString(object v)
    	{
    		if (v == DBNull.Value)
    			return string.Empty;
    		else
    			return  Server.HtmlEncode(v.ToString());
    	}
    	
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
    		<asp:Label ID="lbl1" runat="server" Text="Label"></asp:Label>
        </div>
        </form>
    </body>
    </html>


    poi, Data Source=C:\db_prova.mdb -> Data Source=C:\\db_prova.mdb

    poi, CAMBIARE LIBRO

    Pietro

  6. #6
    Addirittura una funzioncina per i valori nulli. Nella funzioncina invece di un parametro object potresti pasarci direttamente il tipo IDataRecord e poi eventualmente utilizzare isdbnull.
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da riccardone
    Addirittura una funzioncina per i valori nulli. Nella funzioncina invece di un parametro object potresti pasarci direttamente il tipo IDataRecord e poi eventualmente utilizzare isdbnull.



    che tu ci creda o on ci creda, è una vecchia funzione asp adattata al caso

    ps. comunque seguirò il tuo consiglio

    ciao
    Pietro

  8. #8
    Utente di HTML.it L'avatar di DeR
    Registrato dal
    Mar 2003
    Messaggi
    975
    Grazie 1000, l'esempio funziona, ora pero devo connettermi ad un db mysql, visto che ho sempre utilizzato quello.

    Provo a cambiare la stringa di connessione oppure devo modificare anche altre cose?
    Ciao DeR

  9. #9
    Utente di HTML.it L'avatar di DeR
    Registrato dal
    Mar 2003
    Messaggi
    975
    Dimenticavo, cosa significa:


    StringBuilder sb = new StringBuilder(1000);
    Ciao DeR

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 © 2025 vBulletin Solutions, Inc. All rights reserved.