HeaderBlog
LaConoscenza.NET
Sequenza di installazione di Visual Studio 2008 e link dei diversi tools. L’obiettivo è di descrivere una completa e corretta installazione. Attualmente ho descritto solo una parte dell’installazione.Procedura di installazione Ambiente di sviluppo
Visualizza l'intero eBook Introduzione a Dotnet  

La sequenza di installazione di Visual Studio 2008 è la seguente:

  1. installare il .NET Framework Version 3.5 SP1, disponibile all’indirizzo: http://www.asp.net/Downloads/
  2. Installare Visual Studio 2008, che comprende già il supporto per Ajax .NET.
  3. Installare il SP1 di Visual Studio 2008 che comprende già il supporto per SilverLight 2.0
  4. Installare i controlli AjaxControlToolkit-Framework3.5SP1-NoSource.zip. Dopo aver eseguito il download, fare click sul file: AjaxControlExtender.vsi
  5. Infine installare le librerie Microsoft AJAX Library 3.5 che aggiungono ulteriori funzioni alle librerie standard: http://msdn.microsoft.com/en-us/asp.net/bb944808.aspx

 

 

 

 

 

 

Data Inserimento Post 05/02/2009 3.08.40  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Pagina aspx
Visualizza l'intero eBook ASP.NET  

Una pagina ASP.NET è un oggetto denominato web form, molto simile ad un’applicazione windows. E' costituito da un insieme di web form, ognuno dei quali contiene oggetti, cioè parti di codice lato client HTML, controlli server o altri oggetti ereditati, per esempio, mediante la direttiva Import.

Una pagina ASP.NET è essenzialmente costituida da due file strettamente connessi:

  • un file con l’estenzione .aspx, in cui vi è memorizzato il codice dichiarativo
  • un file con l’estensione .aspx.cs (se il linguaggio utilizzato è C#), in cui vi è memorizzato il codice della classe associta alla pagina aspx.
  • Il collegamento fra i due file è realizzato mediante una dichiarazione inserita all’inizio del file con l’estensione .aspx. Il formato è il seguente:

<% @ Page CodeFile ="Default.aspx.cs" Inherits ="Blog_Default" %>

La direttiva CodeFile indica il nome del file in cui è contenuto il codice associato alla pagina, mentre Inehrits indica il nome della classe che deriva System.Web.UI.Page,in cui  è inserito il codice.

Una pagine ASP.NET, se non è stata già compilata, la prima volta che viene richiesta avviene la compilazione just-in-time. La classe compilata è detta assembly e viene salvata sul disco per essere riutilizzata alla successiva richiesta.

La classe Page

Quando un PC client richiede una pagina con estensione .aspx, presente sul web server, i componenti inseriti nella pagina sonocompilati in modo da formare un'unica entità. L’oggetto risultante viene utilizzato per elaborare le richieste in arrivo, al fine di restituire i dati richiesti dal PC client. Questa unità è una classe che eredita, dalla classe Page del framework, una serie di caratteristiche. La classe page è quindi un contenitore per tutti i componenti inseriti nella pagina. Alcune delle più importanti proprietà sono:

  • Application. Per ogni applicazione web, vi è un'istanza di questo oggetto che viene condivisa da tutti i client che accedono all'applicazione.
  • Session. E' un riferimento all'oggetto Session che gestisce la sessione corrente
  • Cache. Viene utilizzata per memorizzare dati che restano inalterati tra successive richieste delle pagine.
  • EnableViewState. Valore booleano che indica se i comandi server devono memorizzare il proprio ViewState
  • IsPostBack. Indica che la pagina viene caricata per la prima volta
  • Request. Consente di accedere alle informazioni relative alla richiesta HTTP
  • Response. Consente di accedere e modificare la risposta HTTP

Alcuni dei metodi della classe page sono:

  • DataBind Associa i dati ad un oggetto
  • FindControl Consente di individuare un control nella pagina
  • MapPath Recupera il percorso fisico di uno specifico percorso virtuale

 

Data Inserimento Post 27/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Il concetto di postback
Visualizza l'intero eBook ASP.NET  

Prima di ASP.NET, per elaborare l’input degli utenti occorreva scrivere due pagine. La prima di natura statica conteneva un tag che inviava, mediante l'attributo action, una serie di campi ad seconda pagina di tipo dinamica, il cui compito era di elaborare i valori inviati. Il postback in ASP.NET rende invisibileal programmatore questo meccanismo, attraverso il controllo server form.

Il form server side è indispensabile per gestire i controlli server, si può omettere solo se non si prevede una interazione con la pagina. L'attributo method predefinito è post ed i valori sono disponibili nella collezione Request.Form.

Con la medesima tecnica viene mantenuto lo stato di alcuni controlli, mediante la variabile ViewState. Il ViewState è una variabile stringa, memorizzata in un campo nascosto della pagina aspx, in cui viene salvato lo status della pagina prima di essere inviata al server. Questo status viene letto e trasferito nei diversi control quando il server restituisce la pagina al browser. Il  ViewState consente quindi di ricostruire lo stato della pagina, in quanto le comunicazioni HTTP client-server sono prive di stato.

L’architettura postback offre la possibilità di realizzare pagine HTML contenenti controlli con cui l'utente può interagire. I controlli attivano eventi che il programmatore deve scrivere per realizzare gli opportuni handler che devono gestire l'interazione. Quando si attiva la richiesta di un web form, vengono generati i seguenti eventi:

  • Page_Init,  viene generato quando la pagina deve essere inizializzata
  • Page_Load viene generato quando la pagina deve essere caricata
  • Control Event viene generato quando è un comando (ad esempio un pulsante) che attiva l'inviato della pagina al server.
  • Page_Unload viene generato quando la pagina è scaricata dalla memoria

La differenza tra il Page_Init ed il Page_Load è che nel Page_Init il ViewState non è stato ancora caricato, per cui i comandi mantengono i valori predefiniti anziché i valori impostati durante il postback.

Per gestire l'evento Page_Load, in genere si utilizza la proprietà IsPostBack della classe Page. Se IsPostBack è true, ci troviamo in un contesto di postback, cioè la pagina è stata già caricata, ma viene restituita al web server a seguito del verificarsi di un evento sul client. Se IsPostBack è falsa, la pagina viene caricata per la prima volta.

Nella pagina aspx, la prima riga è una direttiva che specifica il linguaggio utilizzato, dove si trova il codice, il nome della classe da cui ereditare e l'AutoEventWireup, impostato su true per default, per indicare che deve essere generato in automatico un evento al caricamento della pagina, che sarà gestito dal metodo Page_Load, presente nel file che contiene il codice, Default.aspx.cs.

Data Inserimento Post 27/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Le Master page
Visualizza l'intero eBook ASP.NET  

In un’applicazione Windows, un Form  è una classe che può contenere controlli da cui è possibile derivare oggetti mediante l’ereditarietà visuale, mentre in un'applicazione web ciò non è possibile,  a causa della presenza di codice di markup.

In ASP.NET 1.x e successive è possibile, mediante gli User Control, definire in un file separato una parte di una pagina ASPX da poter successivamente inserire in una o più pagine web.

In ASP.NET 2.0 sono state introdotte le Master Pages e le Content Pages, che non realizzano l'ereditarietà visuale, ma forniscono una struttura comune (grafica e logica), che rende possibile inserire dinamicamente in una pagina principale (o Master) deverse pagine di contenuto.  Una Master Page è essenzialmente un template, definito in un file che deve avere l'estensione .master. E' una normale pagina aspx, in cui la direttiva @Page è stata sostituita dalla direttiva @Master.

  • Una Master page, oltre ai normali controlli, contiene anche i ContentPlaceHolder
    • cioè aree riempibili con contenuti definiti nelle sezioni di Content Pages.
    • Una Master Page priva di controlli ContentPlaceHolder, non ha senso.

Tipicamente, in una Master Page vengono inseriti tutti i controlli che devono essere condivisi, mentre le parti dinamiche vengono definite mediante controlli segnaposto la cui sintassi è la seguente  <asp:ContentPlaceHolder />

Le pagine di contenuto forniscono solo i contenuti, presentandoli secondo le impostazioni della Master Page a cui fanno riferimento. Una Content Page è una pagina ASPX che contiene solo controlli Content Pages. Alla Content Page viene associata una Master Page  contenente controlli  ContentPlaceHolder.

  • La corrispondenza tra Content e ContentPlaceHolder si basa sul valore della proprietà ID del placeholder.
  • Un controllo Content viene associato a un controllo ContentPlaceHolder tramite la relativa proprietà ContentPlaceHolderID.
  • All'interno di una pagina di contenuto solo un controllo Content può fornire il contenuto per un controllo ContentPlaceHolder nella pagina master.

Una Master Page è quindi un contenitore di modelli:

  • Offre una comoda soluzione per inserire in una struttura, i contenuti di un insieme di pagine che costituiscono i diversi contenuti da visualizzare.
  • Utilizza un segnaposto di contenuto per definire le sezioni della pagina master che successivamente saranno sostituite con il contenuto definito nelle pagine Content . 

Quando si utilizzano le Master Page e le relative pagine di Contenuto, occorre aggiungere i tag di documento XHTML (html, head e body), esclusivamente nella pagina master, in quanto nelle Content Pages vi sono solo i contenuti da inserire nei segnaposto della pagina master.

Una Master Page può essere inserita in un progetto mediante la selezione Aggiungi nuovo elemento e quindi Master-Page. La struttura della Master Page è la seguente:

<% @Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits= "MasterPage"%>

<html>
<head id ="HeadMP" runat ="server">
    < title > Master Page</title>
</ head >
< body >
    < form id ="formMP" runat ="server">
        < div >
            < asp: contentplaceholder id ="PlaceHolder" runat ="server">

            </ asp: contentplaceholder >
        </ div >
    </ form >
</ body >
</ html >

Un'associata content Page ha la seguente struttura:

<% @ Page Language ="C#" MasterPageFile ="MasterPage.master" AutoEventWireup ="true" CodeFile ="Home.aspx.cs" Inherits ="Home" Title ="Untitled Page" %>

 

< asp: Content ID ="Content2" ContentPlaceHolderID ="PlaceHolder" runat ="server">

    < asp: Label ID ="Label1" runat ="server" Text ="Benvenuto"></ asp: Label >

</ asp: Content >

 

Data Inserimento Post 28/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Site Navigation
Visualizza l'intero eBook ASP.NET  

Site Navigation, è una caratteristica che consente di creare una struttura necessaria per navigare in un’applicazione web in modo sicuro, facile e intuitiva. ASP.NET offre un sistema, basato sul concetto di Provider. Al Site Navigation è possibile associare tre  nuovi controlli:

  • Menu, controllo che visualizza la struttura del sito attraverso un menu a tendina personalizzabile.
  • TreeView, controllo che visualizza la struttura del sito in un menu ad albero .
  • SiteMapPath, controllo che visualizza la posizione corrente dell'utente rispetto alla struttura del sito.

Ognuno di questi controlli richiede la presenza della "Site Map", una fonte di dati in grado di rappresentare l'intera struttura del sito. La Site Map può essere definita in uno o più file .sitemap (file XML) oppure da uno o più custom provider.

Definizione della Site Map 

Sono possibili diversi modi per creare la Site Map. Di default, ASP.NET 2.0 si aspetta di trovare nella root dell'applicazione il file web.sitemap; con una struttura ben definita.

<? xml version = "1.0"encoding="utf-8" ?>

< siteMap xmlns = "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

      < siteMapNode url = ""title="Menu"description="Menu">

            < siteMapNode url = "Home.aspx"title="Home"  description="Home" />

           < siteMapNode url = "Persone.aspx"title="Persona"  description="Persona" />

      </ siteMapNode >

</ siteMap >

Questo file è una collezione di oggetti di tipo SiteMapNode, con la dichiarazione dei suoi 3 principali attributi: url (indirizzo della pagina), title (titolo della pagina) e description, (descrizione della pagina, cioè il contenuto del relativo tooltip).

E' possibile cambiare il nome del .sitemap oppure è necessario dover gestire più di uno, in questo caso è sufficiente dichiarare nel web.config che esiste un provider specifico (che puo essere anche sempre lo stesso) per ogni file .sitemap creato. Un esempio di dichiarazione da inserire nel web.config è la seguente:

<siteMap defaultProvider =" Sitemap1" >
<
providers >
    <
add name = "SiteMap1" type = "System.Web.XmlSiteMapProvider"  
           
siteMapFile = "First.sitemap" />
    <
add name = SiteMap2" type ="S ystem.Web.XmlSiteMapProvider"  
           
siteMapFile =" Second.sitemap" />
</
providers >
</
siteMap >

Data Inserimento Post 28/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Introduzione ad ADO.NET
Visualizza l'intero eBook ADO.NET e Sql Server  

ADO.NET è una libreria di classi il cui fine è di consentire una interazione con Database, file testo, file XML, ecc. 

 

Data Provider

ADO.NET consente ad un'applicazione web di scambiare informazioni con diversi tipi di fonti dati o Database. Tuttavia, non vi è un insieme unico di classi, per riferirsi ai diversi database, ma per ogni tipo di database è stato implementato un diverso Data Provider, cioè librerie di classi, che definiscono un modo comune per interagire con specifiche sorgenti dati o protocolli. I pricipali provider sono i seguenti:

 

Provider Name

API prefix

Data Source Description

ODBC Data Provider

Odbc

Sorgenti dati con interfaccia ODBC

OleDb Data Provider

OleDb

Sorgenti dati che espone interfaccie OleDb (Access o Excel)

Oracle Data Provider

Oracle

Per database Oracle

SQL Data Provider

Sql

Per interfaccia con Microsoft SQL Server.

 

Namespace

Per utilizzare gli oggetti ADO.NET associati al database Sql-Server occorre dichiarare i seguenti namespace:

using System;

using System.Data;

using System.Data.SqlClient;

 

ADO.NET Objects
ADO.NET comprende diversi oggetti che possono essere utilizzati per interfacciarsi con un  database SQL Server. I più importanti sono:
  • SqlConnection Object
  • SqlCommand Object
  • SqlParameter Object
  • SqlDataReader Object
  • SqlTransaction Object
  • DataSet Object Sql
  • DataAdapter Object
Data Inserimento Post 05/01/2009 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Sql Connection Class
Visualizza l'intero eBook ADO.NET e Sql Server  

Per interrogare un base dati è necessario disporre di una connessione al database. Il fine è di indicare Server, Nome del database, nome utente, password ed altri parametri necessari per il collegamento al database. L’oggetto connessione viene utilizzato dai comandi per specificare su quale database occorre eseguire i comandi.

Una connection reference list è disponibile sul sito:  http://www.connectionstrings.com/

Le Properties della Sql Connection classa sono:
ConnectionString    Connection string al database
ConnectionTimeout Timeout in secondi della connessione
Database                Nome del database
DataSource             Nome del Server
PacketSize             Dimensione dei packets usati per comunicare con il Server
ServerVersion          Version of SQL
State                      Stato della connessione
WorkstationId          Identificatore NetBIOS della machine che ospita il Web form

I Metodi della Sql Connection classa sono:
BeginTransaction()  Pone la connessione in una transazione
ChangeDatabase()  Consente di associare ad una connessione un differente database
Close()                   Chiude la connessione
CreateCommand()   Ritorna un nuovo command object
Open()                    Apre una connessione al database

Connection String
Il codice che segue è un esempio di connection string per il database SqlEspress 2005

SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\SQLExpress;Integrated security=True; 
         User Instance=True;AttachDBFilename=|DataDirectory|Idea05.mdf”;

Il significato dei diversi parametri è il seguente:

  • Data Source è il machine name del computer su cui è running sql server
  • Integrated security indica che occorre usare le attuali credenziali degli utenti di windows (username e password) per accedere a sql server. I possibili valori sono true, false e sspi (indica connessione sicura).
  • User Instance, durante la connessione crea una nuova local SQL Server Express instance. Funziona solo quando si usa l’autenticazione di Windows. Lo scopo è di poter creare una full rights SQL Server instance per un utente con limitati diritti amministrativi sul computer.
  • AttachDBFilename, Path completo del nome del principale file del database

Connection Timeout
E’ una property read-only che contiene il timeout in secondi della connessione. Il valore di default è 30 sec. Per modificare questo parametro occorre indicare il valore nella connection string.

SqlConnection conn = new SqlConnection( ConnString );

msg.Text = conn.ConnectionTimeout;

 

Database

E’ una property read-only che contiene il nome del database. Per cambiare il valore occorre usare il metodo ChangeDatabase() oppure modificare la connection string.

SqlConnection conn = new SqlConnection( ConnString );

msg.Text = conn.Database;

State

La property State consente di ottenere lo stato della connessione. Sono possibili i seguenti valori: Broken, Closed, Connecting, Executing, Fetching, and Open. Questi valori sono definite nel namespace System.Data.ConnectionState

SqlConnection conn = new SqlConnection( ConnString );

msg.Text = conn.State.ToString();

Transaction

Consente di eseguire diverse istruzioni SQL in modo consistente. Ad esempio, a volte occorre aggiornare diverse tabelle in un database (con Insert, update, ecc.) in modo consistente, nel senso che se si verifica un errore occorre annullare tutte le operazioni.

 

SqlConnection conn = new SqlConnection( ConnString );

Conn.Open();

SqlTransaction tx = conn.BeginTransaction();

  //  Esegue le diverse operazioni …

tx.Commit();

conn.Close();

ChangeDatabase

Consente di cambiare database senza dover creare una nuova connessione.

 

SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

 

conn.ChangeDatabase("dbNew");

conn.Close()

 

CreateCommand

Ritorna una nuova instanza di un oggetto SqlCommand

 

SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

 

SqlCommand cmd = conn.CreateCommand();

cmd.CommandText = "DELETE FROM Prodotti";

 

Data Inserimento Post 05/01/2009 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Sql Command Class
Visualizza l'intero eBook ADO.NET e Sql Server  

Comunicare con un database significa indicare le operazioni che si desiderano fare, mediante la classe SqlCommand. Questa classe viene usata per eseguire operazioni su un database o per ottenere informazioni. In altri termini, si utilizza un Object Command per inviare istruzioni SQL alla base di dati. Un oggetto comando utilizza l'oggetto connessione, per conoscere con quale database comunicare.
È possibile utilizzare SqlCommand, per eseguire un comando direttamente oppure mediante un riferimento ad un oggetto SqlDataAdapter, in cui sono memorizzati una serie di comandi da eseguire su un insieme di dati.

Properties
CommandText       Contiene il testo di un commando sql
CommandTimeout  Timeout in secondi per la query
CommandType       Specifica il tipo di commando da eseguire
Connection            Specifica la connessione al database
Parameters            Specifica i parametri della query
SQL Transaction    Specifica un transaction object

Methods
Cancel()                     Annulla la query
CreateParameter()      Ritorna un nuovo SQL parameter
ExecuteNonQuery()    Esegue il commando indicato in CommandText, ma non ritorna dati
ExecuteReader()        Esegue il commando e ritorna i dati in un oggetto DataReader
ExecuteScalar()         Esegue il commando  e ritorna un singolo valore
ExecuteXmlReader()   Esegue il commando  e ritorna i dati in un oggetto XMLDataReader
ResetCommandTimeout() Reset la proprietà CommandTimeout della query

CommandText

La property CommandText è una string che specifica la query da eseguire

 

SqlCommand cmd = new SqlCommand();

cmd.CommandText = "SELECT * FROM Clienti";

SqlCommand.CommandTimeout

 

CommandTimeout

La property CommandTimeout specifica il timeout della query. Il valore di default è di 30 sec.

 

SqlCommand cmd = new SqlCommand();

cmd.CommandTimeout = 50;

 

CommandType

La property CommandType specifica il tipo di query da eseguire. Il CommandType è definito nel namespace System.Data. Può essere StoreProcedure, TableDirect o Text.

 

SqlCommand cmd = new SqlCommand();

cmd.CommandType = CommandType.StoreProcedure;

 

Connection

La property Connection contiene un valido SqlConnection object su cui bisogna eseguire la query.

 

SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

 

Parameters

La property Parameters contiene i nomi di un gruppo di parametri SQL che devono essere usati in una istruzione SQL oppure quando si invoca una Stored Procedure che richiede parametri di Input/Output.

 

Nell'esempio che segue dopo aver aperto una connessione al database, viene creato un comando per eseguire una stored procedure. Successivamente vendono creati i parametri di input, output ed infine viene eseguito il comando:

 

SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("AddNewClient", conn);

cmd.CommandType = CommandType.StoredProcedure;

// ---------------------------------------------------------Configura I parametric di input

SqlParameter param = new SqlParameter();

param = cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 20));

param.Direction = Parameter.Direction.Input;

param.Value = sName.Text;

// ---------------------------------------------------------Configura I parametric di output

param = cmd.Parameters.Add(new SqlParameter("@retval", SqlDbType.Int, 4));

param.Direction = ParameterDirection.Output;

cmd.ExecuteNonQuery();

 

Transaction

La property Transaction contiene l’eventuale oggetto transaction per l’attuale serie di comandi

  • Il metodo BeginTransaction dell'oggetto Conn segna  l'inizio della transazione
  • Vengono Eseguiti i comandi
  • Infine viene attivato  il metodo Commit per completare la transazione o il metodo Rollback per annullare la transazione

 SqlConnection conn = new SqlConnection(ConnString);

conn.Open();

SqlTransaction trans = conn.BeginTransaction(IsolationLevel.Serializable, "RemoveClients");

cmd = new SqlCommand("", conn);

cmd.Transaction = trans;

......

trans.Commit();

 

Cancel()

Il metodo Cancel() rimuove una query attiva.

SqlConnection conn = new SqlConnection(ConnString);

conn.Open();

SqlCommand cmd = new SqlCommand("SELECT * FROM Clienti", conn);

cmd.ExecuteNonQuery();

cmd.Cancel();

 

CreateParameter()

Il metodo CreateParameter() ritorna una nuova istanza di un SQL parameter.

SqlParameter param = cmd.CreateParameter();

param.ParameterName = "@CustomerID";

param.DbType = SqlDbType.NVarChar;

param.Size = 5;

param.Value = "123";

param.Direction = ParameterDirection.Input;

cmd.Parameters.Add(param);

  

ResetCommandTimeout()

Ripristina il valore di default (30 sec.) della proprietà CommandTimeout.

cmd.ResetCommandTimeout();

 

ExecuteNonQuery()

Il metodo ExecuteNonQuery() esegue il commando indicato ella proprietà Command Text. E’ un metodo ottimizzato per le query che non ritornano informazioni.

È possibile utilizzare il metodo ExecuteNonQuery per ottenere informazioni sulla struttura di un database, per creare oggetti del database (per esempio, tabelle), modificare i dati contenuti in un database mediante le istruzioni UPDATE, INSERT o DELETE. Il valore restituito da queste istruzioni indica il numero di righe interessate dal comando, mentre per tutte le altre istruzioni ritorna il valore -1.

 

SqlConnection conn = new SqlConnection(ConnString);

conn.Open();

SqlCommand cmd = new SqlCommand("DELETE FROM Autori

         WHERE LastName='Samanton'", conn);

cmd.ExecuteNonQuery();

  

ExecuteReader()

Il metodo ExecuteReader() esegue il commando indicato nella property command text. Ritorna un oggetto SqlDataReader che è il risultato della query.

SqlConnection conn = new SqlConnection(ConnString);

conn.Open();

SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", conn);

SqlDataReader reader = cmd.ExecuteReader();

  

ExecuteScalar()

ExecuteScalar è un efficiente metodo dell'oggetto Command che può essere usato quando una query deve ritornare un solo valore.

 

SqlConnection conn = new SqlConnection(ConnString);

conn.Open();

SqlCommand cmd = new SqlCommand("SELECT count(*) FROM Client", conn);

int32 NumOfClient = (int32)cmd.ExecuteScalar();

msg.Text = "Vi sono "+ NumOfClient.ToString()+" client nel database.";

Data Inserimento Post 05/01/2009 9.24.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
SqlParameter Class
Visualizza l'intero eBook ADO.NET e Sql Server  

Questa classe rappresenta un parametro di un oggetto SqlCommand. Viene usato per passare parametri alle Stored Procedure o a comandi.

DbType      Contiene il data type del Sql Parameter
Direction    Definisce il parametro di input o output
IsNullable   Definisce quando un parametro può essere null (true o false)
Precision    Contiene la precision del parametro
Scale         Contiene la scala del parametro
Size           Contiene il size del parametro
Value         Contiene il valore del parametro
ParameterName Contiene il nome del parametro

 Per settare le property usare le seguenti istruzioni

SqlParameter param = new SqlParameter();

param.DbType    = SqlDbType.NVarChar;

param.Direction  = ParameterDirection.Input;

param.IsNullable = true;

 

Per usare l’oggetto SqlParameter occorre:

1.     Costruire la stringa di comando con i parametri

2.     Dichiarare un SqlParameter object e assegnarli i valori

3.     Assegnare il SqlParameter object alla property del SqlCommando

 

Il primo step è costruire una command string che contiene i parametri formali, preceduti dal simbolo @, che saranno successivamente sostituiti con i valori effettivi quando sarà eseguito il SqlCommand.

            SqlCommand cmd = new SqlCommand(

                        "SELECT * FROM Client  WHERE NomeAzienda = @Nome", conn);

Il second step consiste nel dichiarare tutti parametric indicate nella stringa di comando

   SqlParameter param       = new SqlParameter();

   param.ParameterName  = "@Nome";

   param.Value                    = "IdeaSoftware";

 

Il terzo step consiste nell’aggiungere il parametro all’oggetto command

cmd.Parameters.Add(param);

 

Un esempio di utilizzo della classe SqlParameter è il seguente:

        publicvoid ReadWithParam( int  inputId )

{

        SqlDataReader dr = null;

         

        string ConnString = ConfigurationManager.AppSettings["dbIDEA"];

        SqlConnection conn = newSqlConnection(ConnString);

        conn.Open();

        //-------------------------------------------------------------------

        SqlCommand cmd = newSqlCommand("SELECT * FROM tPost where Id = @Id", conn);

        SqlParameter param  = newSqlParameter();  // 2. Definizione parametri

        param.ParameterName = "@Id";

        param.Value  = inputId;

        cmd.Parameters.Add(param);   // 3. Aggiunge I parametri al Commando

        dr = cmd.ExecuteReader();

        string s = "";

        while(dr.Read()) {

            s += Convert.ToString(dr["Titolo"]) + "<br />";

        }

        Titolo.Text = s;

        if  (dr != null)

            dr.Close();

        if (conn != null)

            conn.Close();

}

 
Data Inserimento Post 13/01/2009 22.23.47  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
SqlDataReader Class
Visualizza l'intero eBook ADO.NET e Sql Server  

Fornisce un metodo per la lettura di un flusso di righe in modo forward-only da un database SQL. Ciò significa che è possibile estrarre i dati dal flusso, solo in modo sequenziale, mentre se bisogna manipolare i dati nelle diverse righe occorre usare un DataSet.
Per creare un oggetto SqlDataReader, invece di utilizzare un costruttore, occorre attivare il metodo ExecuteReader dell'oggetto SqlCommand,.
Mentre l'oggetto SqlDataReader è in uso, l'oggetto SqlConnection associato è occupato a rendere disponibile l'oggetto SqlDataReader, non è possibile eseguire altre operazioni  sull'oggetto SqlConnection fino a quando non viene chiamato il metodo Close dell'oggetto SqlDataReader.

Properties
FieldCount Contiene il numero di fields ottenuti dalla query
IsClosed    vale True se il SqlDataReader object è chiuso
Item          Contiene una collection di valori accessibili per nome o per numero ordinale
RecordsAffected  Ritorna il numero di records influenzati da una executed query

Methods
Close()           Chiude il SqlDataReader object
GetBoolean()   Ritorna un valore di tipo Boolean (esiste un metodo per ogni tipo di dati)
IsDBNull()       Ritorna True se il campo contiene Null
Read()            Lettura del successive valore dal result set into memory

   

     string queryString = "SELECT ID, Nome FROM dbo.Client;" ;

     using (SqlConnection Conn = new SqlConnection( connString )) {

        SqlCommand cmd = new SqlCommand(queryString, conn);

        Conn.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read()) {

             int val= Convert.ToInt32(dr[0]);

             string s= Convert.ToString(dr ["Nome"]);

        }

        dr.Close();

        Conn.Close();

     }

 

FieldCount

Ritorna il numero di fields nel current record

       SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select id, lastname, firstname from Client", conn);

SqlDataReader dr = cmd.ExecuteReader();

FieldCount = dr.FieldCount;

 

IsClosed

vale True se il SqlDataReader object è chiuso

       sqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select id, lastname, firstname from Client", conn);

SqlDataReader dr = cmd.ExecuteReader();

If (reader.IsClosed != true) {

      // Esegue le operazioni con il datareader

}

 

Item

La property Item property ritorna il valore di una colonna nel suo format native

        SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select id, lastname, firstname from Client", conn);

SqlDataReader dr = cmd.ExecuteReader();

string msg = "";

while(reader.Read()){

    msg = msg + dr["employee_id"] + " " + dr["lastname"] +

                      ", " + dr["firstname"] + "<br>";

        }

dr.Close();

 

RecordsAffected

The RecordsAffected property contains the number of records affected by the query.

       SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select id, lastname, firstname from Client", conn);

SqlDataReader dr = cmd.ExecuteReader();

int RecordsAffected = dr.RecordsAffected;

 

Close()

Il metodo Close() consente di chiudere il SqlDataReader object.

SqlDataReader dr = cmd.ExecuteReader();

dr.Close();

 

GetBoolean(Int32 i)

Il metodo GetBoolean() ritorna il valore di una specificata colonna di Booleano.

            SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select fieldname, FROM Table", conn);

SqlDataReader dr = cmd.ExecuteReader();

dr.Read();

bool value = dr.GetBoolean(0);

dr.Close();

conn.Close();

 

IsDBNull()

Il metodo IsDBNull() ritorna True se la colonna specificata contiene null.

            SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select fieldname FROM Table", conn);

SqlDataReader reader = cmd.ExecuteReader();

while(reader.Read()){

    if(reader.IsDBNull(0) != true)

        value = reader.GetValue(0);

}

reader.Close();

conn.Close();

 

Read()

Il metodo Read() avanza il data reader al successive record. Ritorna True se vi sonono recods, diversamente ritorna False

            SqlConnection conn = new SqlConnection( ConnString );

conn.Open();

SqlCommand cmd = new SqlCommand("Select fieldname from aTable", conn);

SqlDataReader dr = cmd.ExecuteReader();

string value;

while(dr.Read()) {

    value = dr.GetValue(0);

}

dr.Close();

conn.Close();

 

Data Inserimento Post 13/01/2009 22.50.12  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook