Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    48

    Connessione a database con ADO.NET in ambiente VS 2005

    Ciao a tutti ... premetto che sono un novello.
    Ho un database SQL Server (estensione .mdf) da gestire in ambiente Visual Studio 2005.
    Per integrare il database nel progetto, dalla finestra "Esplora soluzioni" aggiungo il nuovo elemento nella folder principale del sito e nella cartella App_Data.
    Per la connessione al database intendo impiegare ADO.NET 2.0.
    A tale scopo in codice C# importo i namespace "System.Data" e "System.Data.SqlClient" e istanzio un oggetto connection attraverso:
    SqlConnection conn = new SqlConnection("stringa di connessione");

    Le mie domande sono:
    1) Il procedimento riportato è esatto o vi sono imprecisioni?
    2) Come si ricava la stringa di connessione?

  2. #2
    Ciao, una volta che hai creato il databse in Sql server, non devi fare altro, che utilizzare le classi messe a disposizione da Ado.Net (sqlconnection, sqladapter, ecc) per gestire i dati.
    La stringa di connessione la devi inserire tu, (fatti uno snippet) la puoi ottenere o tramite la guida msdn (f1) sulla proprietà connectionstring, oppure tramite il sito
    http://www.connectionstrings.com/
    Qui http://www.dotnetromacesta.org/TuttiTrucchi.aspx nella sezione ado.net trovi diversi trucchi sulla gestione dei dati e sql server.
    Ciao EMA.
    Sito Web:
    http://blog.shareoffice.it/emanuele
    Blog Personale
    http://emanuelemattei.blogspot.com/

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    48
    OK, per la stringa di connessione credo di aver risolto, mentre per il codice non ancora. Vediamo l'esempio pratico.
    Ho un database Access (basiamoci su questo che dovrebbe essere più semplice) posizionato nella root principale, di nome "Calciatori.mdb", dotato della tabella di nome "Tutti".
    Intendo far sì che all'apertura della pagina venga cancellato il record corrispondente al cognome "Accursi".
    Allora scrivo:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <%@ Import Namespace="System.Data"%>
    <%@ Import Namespace="System.Data.OleDb"%>

    <script runat="server">
    void Page_Load()
    {
    OleDbConnection m_conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\Calciatori.mdb");
    m_conn.Open();
    OleDbCommand m_cmd = new OleDbCommand();
    m_cmd.Connection = m_conn;
    m_cmd.CommandText= "DELETE from Tutti where Cognome='Accursi'";
    m_conn.Close();
    }
    </script>

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

    ma non ottengo alcun effetto ... cosa sbaglio ?

  4. #4

    Non succede nulla, perchè non viene utilizzato il metodo (executenonquery, ecc) per eseguire la query.
    Altra tecnica che consiglio è quello di utilizzare la classe oleadapter tipo questo script http://www.dotnetromacesta.org/Ado_N...ry_Select.aspx vedi il codice, tranne la parte in cui si utilizza il metodo select.
    Ciao EMa.
    Sito Web:
    http://blog.shareoffice.it/emanuele
    Blog Personale
    http://emanuelemattei.blogspot.com/

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    48
    Ciao Ema e grazie per il validissimo apporto.
    Prima di imparare ad utilizzare la classe oleadapter vorrei arrivare ad "aggiustare il tiro" del precedente codice.
    Ho provato a riscrivere il corpo del "Page_Load()" comprendendo il metodo ExecuteNonQuery nel seguente modo:

    <script runat="server">
    void Page_Load()
    {
    OleDbConnection m_conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\Calciatori.mdb");
    OleDbCommand m_cmd = new OleDbCommand();
    m_cmd.Connection = m_conn;
    m_cmd.CommandText= "DELETE from Tutti where Cognome='Accursi'";
    m_conn.Open();
    m_cmd.ExecuteNonQuery();
    m_conn.Close();
    }
    </script>

    ma ugualmente non ottengo alcun effetto sul database.
    Manca ancora qualcosa?
    Un dubbio: nella finestra progettazione non ho aggiunto lo strumento SqlDataSource ... è obbligatorio usarlo o si può scrivere manualmente tutto il codice come sto tentando di fare?

  6. #6
    Uhmmmm
    Ma ti genera un errore?
    Metti un try catch, sono giusti i nomi della tabella e campi?
    ciao EMa.
    Sito Web:
    http://blog.shareoffice.it/emanuele
    Blog Personale
    http://emanuelemattei.blogspot.com/

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    48
    Ciao Ema.
    No, non genera alcuna eccezione. Quando vado in RUN si apre la pagina web (ovviamente vuota), poi stoppo l'esecuzione, vado a leggere il database "Calciatori.mdb" nella tabella "Tutti" ma il record con il cognome "Accursi" non viene cancellato.
    I nomi del campo e della tabella sono coerenti.
    Ti riporto nuovamente per intero il codice scritto nella "Default.aspx", così se hai voglia e tempo puoi anche testarlo di persona con un copia e incolla dopo aver adeguato le nomenclature del database:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <%@ 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">
    void Page_Load()
    {
    OleDbConnection m_conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\Calciatori.mdb");
    OleDbCommand m_cmd = new OleDbCommand();
    m_cmd.Connection = m_conn;
    m_cmd.CommandText = "DELETE from Tutti where Cognome='Accursi'";
    m_conn.Open();
    m_cmd.ExecuteNonQuery();
    m_conn.Close();
    }
    </script>

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

  8. #8
    scusa ma nel primo messaggio hai detto di utilizzare sql server poi nella stringa di connessione c'è un mdb, che mi risulta essere un db file di microsoft access...
    ...NO ONE IS INNOCENT ANYMORE...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    48
    Sì, hai perfettamente ragione rotteninside ... ma nel secondo messaggio ho scritto che avrei fatto riferimento a un database Access perché credo sia più facilmente gestibile ... per la serie "scusate, sto imparando".
    Forza ragazzi, secondo voi come mai non funziona ? Per voi esperti dovrebbe essere semplicissimo scoprire l'inghippo ...
    Se c'è altro che non ho specificato o che comunque vi serve sapere, chiedetemi pure.

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.