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: |