APLICATII MICI DE TEST

Acum vom trece aplicatia minimala de consola in mai multe outputuri : Windows Forms, Asp.NET, WPF

Vom transforma aceasta aplicatie intr-una de Windows Forms

Click dreapta pe solutie, Add=> New Project, Windows Forms Application


 

Dublu click pe form1, luam un buton din Toolbox , dublu click pe el, si apare evenimentul de click

 


 

Copiem exemplu de la aplicatia ConsoleApplication1, modificand Console.Write in MessageBox

In figura alaturata se vede ca nu aplicatia nu stie cine este SqlConnection. Dar, imediat in stinga, exista un icon mic -daca dati click pe el, o sa vedeti ca stie – alegeti “using”

 


 

Alegeti “set as startup project”

 


 

CTRL+F5 si apasati pe “buton1” – ar trebui sa va apara

 


 

 

Ce am observat ? Ca am scris de 2 ori acelasi cod. Daca am avea de modificat, nu ar fi cam greu in aceasta aplicatie -dar pentru o aplicatie mare am putea intimpina probleme. Ar fi bine daca acest cod s-ar tine undeva , intr-o locatie comuna – ceea ce in Windows numim dll.

OK – sa adaugam un dll – click dreapta pe Solution, Add=>New Project , Class Library

A aparut “Class1” si adaugam codul de pe Consola, modificat putin – nu mai interceptam SqlException -ca nu am stii ce sa intoarcem ( de fapt, ar trebui sa ne facem clasa noastra de exceptii – dar despre asta mai tirziu) – si intoarcem chiar ce gasim in BD:

    public
string MessageFromBD()

{


using (SqlConnection sc = new
SqlConnection())

{

sc.ConnectionString = @”Server=.\SqlExpress;Database=testAndrei;Trusted_Connection=True;”;

sc.Open();


using (SqlCommand sco = new
SqlCommand())

{

sco.CommandType = CommandType.Text;

sco.CommandText = “select top 1 Test from TestTable”;

sco.Connection = sc;


string text = sco.ExecuteScalar().ToString();


return text;

}

}

 

}

 

 

Bun – acum sa chemam acest mesaj si in consola, si in Windows Forms.La amindoua dam click dreapta pe “References”, “Add reference”, “projects”


Selectam ClassLibrary1 si dam OK. Puem pe Console Application1 set as startup

Inlocuim codul din ConsoleApplication1, Program cu urmatorul:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;

namespace ConsoleApplication1

{


class
Program

{


static
void Main(string[] args)

{


try

{

ClassLibrary1.Class1 p = new ClassLibrary1.Class1();


string text = p.MessageFromBD();


Console.WriteLine(“found “ + text);

}


catch (SqlException ex)

{


Console.WriteLine(” Eroare conexiune:” + ex.Message);


return;

}

 

 

}

}

}

 

CTRL+F5,ca sa vedem rezultatul. Daca merge, haidem sa il modificam si pe cel de Windows Forms( nu uitati sa puneti referinta si set as startup)

 

Bun – acum vom face si o aplicatie WPF -click dreapta pe solutie, Add=>New Application, WpfApplication.

Adaugati referinta la ClassLibrary1, adaugati acelasi cod ca la Windows Forms si CTRL+F5

 

Ultimul pas, facem o aplicatie Web pentru aceasta aplicatie:

In carte=>testBD creeam un folder numit WebApplication1.Apasam “Start=>Run , control panel( swtich to classic view daca scrie asa ceva), administrative tools, Internet Information Services”

Expandati “local computer “, “WebSites”,”Default Web Site”, click dreapta pe “default web site”,new , “Virtual directory”


 

La alias scrieti “WebApplication1” si la Directory scrieti calea catre folder ( la mine, C:\carte\testBD\WebApplication1)

Asigurati-va ca la click dreapta pe “WebApplication1” , properties, ASP.NET, versiunea este 2.0


 

 

Bun – acum sa creeam aplicatia. Pornim Microsoft Visual Web Developer 2008 Express Edition si “File=>OpenWebSite, Local IIS” si expandati pina dati de WebApplication1

 


 

 


Acum adaugam dll-ul care facea comunicarea cu BD:

 

File=> Add=> Existing project si navigati pina la ClassLibrary1( la mine, C:\carte\testBD\ClassLibrary1). Adaugati csproj.Adaugam referinta la dll: La fel, click dreapta pe http://localhost/WebApplication1 , add reference, projects, classlibrary1

Acum adaugam pagina unde o sa vedem mesajul :

click dreapta pe http://localhost/WebApplication1 , add new item, Web Form ( fiti atent in ce limbak dati -C# sau VB.NET…)

Acum, gasiti jos Design – apasati pe el

 


 

 

Din toolbox alegeti din nou butonul , trageti pe forma si dati dublu click

Vom pune (aproape) acelasi cod ca si pentru WindowsForms/Console/WPF:

protected
void Button1_Click(object sender, EventArgs e)

{


try

{

ClassLibrary1.Class1 p = new ClassLibrary1.Class1();


string text = p.MessageFromBD();

Response.Write(“found “ + text);

}


catch (SqlException ex)

{

Response.Write(” Eroare conexiune:” + ex.Message);


return;

}

}

 

Apasati CTRL+F5, apasati pe buton si ar trebui sa va scrie:

Eroare conexiune:Cannot open database “testAndrei” requested by the login. The login failed. Login failed for user ‘TEST1\ASPNET’. ”

Mai tineti minte ca am folosit conexiunea trusted :

sc.ConnectionString = @”Server=.\SqlExpress;Database=testAndrei;Trusted_Connection=True;”;

 

Acum, haideti sa ne identificam cum trebuie si in ASP.NET. click dreapta pe http://localhost/WebApplication1 , add new item,Web Configuration File(lasati numele de Web.Config asa cum este!), gasiti authentication si puneti linga:

<identity
impersonate=true/>

CTRL+F5 din nou si acum apare:

Eroare conexiune:Cannot open database “testAndrei” requested by the login. The login failed. Login failed for user ‘TEST1\IUSR_TEST1’.

Tare, nu ? Am schimbat un user cu altul – din ASPNET, sub care ruleaza ASP.NET, am schimbat IUSR_TEST1 – sub care rulam default.

Hai sa facem ultima schimbare , ca sa ne recunoasca IIS :

Apasam “Start=>Run , control panel( switch to classic view daca scrie asa ceva), administrative tools, Internet Information Services”

Click dreapta pe “WebApplication1” , properties, Directory security, Anonymous access, Edit,scoateti “Anonymous Access”


 

OK si iar OK. Ne intoarcem la aplicatie si…Ura!, merge:

 

 


 

 

Observatii:

  1. Daca, in loc sa utilizam conexiunea “trusted”( Trusted_Connection=True ) foloseam una in care sa avem credentiale de SQLServer( de ex., sa cu ce parola ati dat) nu ne mai loveam de impersonare..

     

  2. Acest lucru ne-a facut atenti si la aplicatia Windows Forms – e clar ca ea se bazeaza tare pe faptul ca suntem utilizatori “preferentiali” – cu drepturi de administrator – pentru SQL Server

     

  3.  

  4. Tema pentru acasa : realizati aceeasi aplicatie in Silverlight (Hint :In Asp.NET, pe proiect,dati click dreapta, add new File=>Silverlight application)

 

 

Lecturi Recomandate:

    How to implement impersonation in an ASP.NET application, http://support.microsoft.com/default.aspx/kb/306158

2 thoughts on “APLICATII MICI DE TEST

  1. Foarte util pentru inceput, am apucat si eu sa vad ca e cu WPF si Silverlight. Felicitari pentru munca depusa. Astept cu interes si nerabdarea urmatoarea etapa.

Leave a Reply

Your email address will not be published. Required fields are marked *