| Semplice accesso a SQL Server in C# | ||
|
Semplice accesso a SQL Server in C# |
A questo punto è possibile mettere insieme alcuni componenti illustrati nella precedente sezione per ottenere un semplicissimo programma in C# che accede e stampa su schermo il contenuto di una tabella memorizzata su di un server SQL. Per il corretto funzionamento è necessario creare una tabella emp_test sull' SQL Server. Il codice è: create table emp_test
(
ecode int primary key,
ename varchar(20),
ephone char(7)
)
Ovvero è necessaria la creazione di una tabella, con tre colonne: una chiave primaria ecode, codice numerico (int), un nome e un numero di telefono. Non c'è alcun bisogno di creare una connessione ODBC per eseguire il programma. Per semplicità i dati sono stati inseriti manualmente mediante SQL Server Enterprise Manager come mostrato nell immagini che seguono: 1) Si visualizza la tabella emp_test appena creata sul server SQL, nel database master (che in questo caso è in locale, rispetto al programma client in C#):
2) Si inseriscono i dati di esempio nella tabella e la si salva:
Ecco il codice d'esempio. I commenti spiegano le operazioni che sono svolte dal programma: using System;
using System.Data.SqlClient;
public class Test
{
public static void Main()
{
Test t=new Test();
t.Run();
}
public void Run()
{
Console.WriteLine("Connessione");
// Per prima cosa si crea una connessione "conn"
// mediante SqlConnection con i dati del server
// al quale si desidera accedere. Il nome del server è BARIBAL,
// il database che contiente la tabella è master
SqlConnection conn = new SqlConnection("Data Source=BARIBAL; Integrated Security=SSPI; Initial Catalog=master");
Console.WriteLine("Comando");
// Ora bisogna creare il comando cmd mediante SqlCommand.
// In questo caso un semplice SELECT * per prelevare
// tutte le colonne dalla tabella
SqlCommand cmd = new SqlCommand("SELECT * FROM emp_test", conn);
try
{
// La connessione era solo impostata, ora la si apre
conn.Open();
// Si utilizza la classe DataReader per leggere la
// tabella un record per volta, e via via stamparne
// il contenuto sulla console
SqlDataReader myReader = cmd.ExecuteReader();
Console.WriteLine("Code \t Emp. Name \t Emp. Phone");
Console.WriteLine("-----------------------------------------");
// Ad ogni record letto...
// (perchè in questo caso legge l'intera riga)
while (myReader.Read())
{
// ... estrae i valori e li stampa a schermo
Console.WriteLine("{0}\t{1}\t\t{2}", myReader.GetInt32(0), myReader.GetString(1), myReader.GetString(2));
}
// Chiude il DataReader
myReader.Close();
// Chiude la Connessione
conn.Close();
}
catch(Exception e)
{
Console.WriteLine("Exception Occured -->> {0}",e);
}
}
}
ATTENZIONE!!!! Questo programma è da eseguire in locale,
e con i permessi di amministratore per Windows e SQL Server, come
si vede dalla stringa di connessione che non comprende nessun dato
di login (UserID e Password).
Console.WriteLine("Inserire: UserId, Password, Nome del database, Nome del server");
//Crea la stringa di connessione con i valori via via letti da tastiera
string strConnection="user id="+Console.ReadLine()+";password="+Console.ReadLine()+";";
strConnection+="database="+Console.ReadLine()+";server="+Console.ReadLine();
//Per un controllo scrive a schermo la stinga di connessione
Console.WriteLine(strConnection);
//Istanzia SqlConnection
SqlConnection conn = new SqlConnection(strConnection);
3) Ora non resta che compilare ed eseguire il programma:
Fonti: |