ASP.NET i baza

poruka: 26
|
čitano: 7.242
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
protjeran
offline
ASP.NET i baza

Zdravo!
Pošto znam malo SQL-a i ASP.NET-a želio bih to dvoje povezati. E sada kako?, čime?, nije valjda jedini način da u svaki event stavljam (za access):
string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=putanja";
OleDbConnection con = new OleDbConnection(constr);

 

Ili za SQL samo promjenim Oledb u SQL, a constr drugi, itd.

Dakle ima li neki lijep način, inače koristim C#.

Transact-SQL
 
0 0 hvala 0
13 godina
neaktivan
offline
ASP.NET i baza

Iako ne zaslužuješ odgovor, znaš dobro zašto, pomoći ću ti!
Dakle za pristupe bazi podataka u .NET-u imaš mnogo načina, najviše košteni su ORM alati, ilitiga ObjectRelationMaping. Recimo ADO.NET Entity Framewrok.
On radi na principu da mapira sve tabele u klase, a atribute tabela ili kolone u članove tih klasa. To se odvija u db modelu, tačnije ADO.NET Entity Model (.edmx), to zamisli kao sliku baze u tom trenutku, nad njime vršiš upite koji se kasnije spremaju u stvarnu bazu podataka. To radiš preko višeslojne arhitekture, dakle imaš dva sloja za "data/backend" dio i imaš prezentacijski sloj. Slojevi za pristup bazi se nazivaju BuissnesLogicLayer (BLL) i DataAccessLayer (DAL). U DAL-u se nalazi taj entity model, tj. virtuelni kontekst baze, ili najniži sloj backenda, tj. izor podataka. Dok u BLL-u imaš klase koje upravljaju tim izvorom tj. modelom. Tu možeš koristiti i LINQ2SQL za vršenje upita ili tako kao što si ti radio na suho, znači čiste SQL upite.
E sada, ako nisi balavac, hmm, hmm, uzmi neku knjigu ili pogledaj par videa na Pluralsightu i malo guglaj pa vidi kako to sve u praksi radi.

BTW, možeš mi objasnit zašto bi u svakom eventu instancirao SqlClient ili OleDB? , fino to staviš kao public u tu WebFormu ili u jednu klasu i samo nju dodaš u WebFormu ili Model (ili kako to već ide kod MVC-a).

 
0 0 hvala 1
16 godina
offline
ASP.NET i baza

<connectionStrings>

   <add name="connecionString" connectionString="server=upisiserver;uid=user;pwd=pass;database=baza;" providerName="System.Data.SqlClient" />

</connectionStrings>

SqlConnection conn = new SqlConnection();

conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connecionString"].ToString();

 

Staviš u web.config i onda koristiš s ovim dolje. BOS (mislim da se tako zove) je ok način programiranja ali EF će ti ubrzati programiranje nevjerojatno puno

 
1 0 hvala 0
16 godina
offline
ASP.NET i baza

public static string ImeMetode(int nestoID)

     {

       string atibut = "";

       SqlDataReader reader;

       SqlConnection conn;

       conn = new SqlConnection();

       conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connecionString"].ToString();

       SqlCommand cmd = new SqlCommand();

       cmd.CommandText = "SELECT nesto from tblNesto WHERE nestoID=@nestoID";

       cmd.Parameters.Add("@nestoID", SqlDbType.Int).Value = nestoID;

       cmd.CommandType = CommandType.Text;

       cmd.Connection = conn;

       conn.Open();

       reader = cmd.ExecuteReader();

       while (reader.Read())

       {

         atibut = reader["nesto"] != DBNull.Value ? reader["nesto"].ToString() : "";

       }

       return atibut;

     }

 
0 0 hvala 1
16 godina
offline
ASP.NET i baza

Naravno ovo gore ti vrijedi za web aplikacije i tu static metodu staviš u klasu neku, ako se ne varam ovako ne smije raditi u desktop aplikacijama ali njih ne radim

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: ASP.NET i baza
Gajotres kaže...

 ovako ne smije raditi u desktop aplikacijama ali njih ne radim

Nisam siguran na šta misliš, ali nije mi jasno zašto onaj gore kôd ne bi smio biti na Win aplikacijama?

13 godina
neaktivan
offline
ASP.NET i baza

Evo malo preko EF-a.

Prvo imam ovu bazu:

Dodao novi projekt i nekolika foldera, čisto radi organiziranosti:

 

Zatim sam napravio ADO.NET Entity Model:

Dodao klasu koja će predstavljati BLL, koja ima funkciju za otvaranje veze (konstruktor), Dispose za zatvaranje veze. Klasa DBEntites nasljeđuje klasu ObjectContext koja je u biti klasa u kojoj su mapirane tabele, SP...
Imamo funkciju koja je tipa Korisnici, a klasa korisnici predstavlja tabelu korisnici u bazi, vraćat će u listu sve korisnike. Varijabla context je instanca DBEntities klase, dakle preko tog objekta pristupaš modelu.
U drugoj funkciji ima malo LINQ-a, ali o tome nećemo sada.
Dalje imaš funkciju koja spašava u bazu korisnike, pa imaš što briše...

U Frontend projekt dodan Default.aspx:
Njegov CodeBehind, gdje pozivamo metodu spasi korisnika i još neke:
U browseru:
 

Korisnik dodan:

 

 

 

Ovo je na brzinu, ako te zanima EF, morat ćeš uzeti neku knjigu, recimo BgnASP.NET4, ili samo o ADO.NET-u, al ine znam koliko je to isplativo kada je relativno dobro objašnjen i u pomenutoj knjizi a naučiš i dosta o WebFormama.

 
1 0 hvala 1
13 godina
protjeran
offline
Re: ASP.NET i baza
E to mi se već sviđa, možeš li mi objasniti detaljnije. onako pisanje upita mi je glupo

BTW opet ti :,)
Transact-SQL
13 godina
neaktivan
offline
Re: ASP.NET i baza

Da ti objašnjavam detaljno?, da sam za to stvoren pisao bih knjige. :-)

Ali pošto mi je YT kanal prazan, imam volje/vremena, a ne da mi se pisati, mogao bih snimiti jedan tutorial o tome, ali upitno je koliko su videi korisni, mada mogu za pokazivanje koncepta.

12 godina
neaktivan
offline
ASP.NET i baza

Kako se spremaju KlijentID i VoziloID u tablicu Rezervacija.

Da li treba nešto dodati ili mjenjati u kodovima sa slike?

Model Baze podataka Model Baze podataka
kod u DBBL.csi kod u DBBL.csi
kod u Rezervacija.aspx.cs kod u Rezervacija.aspx.cs
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: ASP.NET i baza

Pa moraš znati koje vozilo spremaš u rezervaciju i ko ga sprema. Recimo klijent se logira na sajt i njegov ID čuvaš u sesiji, a vozila imaš u nekoj drop down listi i njezin SelectedValue spremaš kao VoziloID. Naravno ako si prije toga pravilo popunio DorpDown listu, tačnije njezin atribut ValueMember.

12 godina
neaktivan
offline
Re: ASP.NET i baza

popunio sam dropdown listu to mi nije nikakav problem i sve ostalo mi je uredu.

samo je problem kad popunim podatke u textbox i posaljem da se spremi u bazu

javlja da ne moze spremiti voziloID i klijentID u tablicu rezervacija.

 

EDIT:

bio sam nesto stavio ovdje sta sam izmjenio,pa sam izbrisao jer sam stavio drzavaID umjesto klijentID.

Ako ti se da samo mi napiši gdje trebam šta dodat.

Poruka je uređivana zadnji put ned 21.4.2013 9:47 (dave1989).
12 godina
neaktivan
offline
ASP.NET i baza

moze li se klijentID spremiti bez sesije,meni ne treba da se logira na stranicu

već samo da popuni podatke u tablicu Klijent te se KlijentID iz tablice sprema u

tablicu Rezervacija.

Moj PC  
0 0 hvala 0
14 godina
offline
ASP.NET i baza

Ne znam hoće li pomoći, ali u mysqlu imaš kod koji ti kupi id zadnjeg ubačenog podatka u tablicu. mysql_insert_id. Neposredno poslije izvršenog queryja pokupiš id i kasnije s njim radiš šta hoćeš. Nadam se da mislimo o istom..

Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: ASP.NET i baza

Pokušat ću nešto

u svakom slučaju hvala

13 godina
neaktivan
offline
Re: ASP.NET i baza

Možeš da na jednoj formi imaš texboxove za klijenta i za vozilo i za rezervaciju i da sve to spremiš jednim klikom na dugme, ali sumnjam da je to najbolje rješenje.

Znači prvo kreiraš entitet klijenta, pa vozila i popuniš podatcima sa forme, dodaših u bazu, a zatim u tabelu rezervacije dodaš rezervaciju i primarne ključeve vozila i klijenta.
U EF-u, nakon što entitet dodaš u bazu, npr.
var temp = new NekaTabela();

temp.Ime = "niko";

temp.Prezime = "nikic";

ctx.NekaTabela.Add(temp);

//sada možeš pristupiti njegovom ID-u, koji je bio auto incrementResponse.Write(temp.Id);

12 godina
neaktivan
offline
Re: ASP.NET i baza

Eo pokušavao sam nešto al ne ide,spreme se podaci od vozila i klijenta al kad otvorim tablicu od rezervacije nema ništa.

Pokušat ću opet nešto.

 

17 godina
offline
ASP.NET i baza

Jesi save-ao changes?

Rvat katolik!
 
0 0 hvala 0
12 godina
neaktivan
offline
Re: ASP.NET i baza

evo slika ispod kako sam pisao:

slika slika
17 godina
offline
Re: ASP.NET i baza
dave1989 kaže...

evo slika ispod kako sam pisao:

newrezervacija ti sada mora dobiti ID od autoincreace-a.

 

I zasto castas korisnik i vozilo u int?

Zar ne bi trebalo biti Korisnik.idkorisnik i vozilo.idvozilo ili nesto slicno?

Rvat katolik!
Poruka je uređivana zadnji put uto 7.5.2013 13:02 (tnakir).
12 godina
neaktivan
offline
Re: ASP.NET i baza

Šta treba uraditi da se dobije ID od autoincreace-a?

 

Ako je pogrešno ovo sto je napisano gore na slici,šta treba mjenjati ili didati?

 

13 godina
neaktivan
offline
Re: ASP.NET i baza
dave1989 kaže...

Šta treba uraditi da se dobije ID od autoincreace-a?

 

Ako je pogrešno ovo sto je napisano gore na slici,šta treba mjenjati ili didati?

 

Gore sam ti napisao da EF, nakon dodavanja objekta u bazu (reda), popuni ID. Pogledaj.

 

Ti castuješ objekt tipa Vozilo u int, što je ne moguće, možeš pretvarati int u float, int u string, string u int, ali Vozilo u int neće ići. Ti moraš uzeti vozilo.ID ili kako si nazvao primarni ključ u tabeli vozila.

12 godina
neaktivan
offline
Re: ASP.NET i baza

Pretpostavio sam da je problem u castanju u int,ovako sam nešto slićno vidio na nekoj stranici pa sam isao po tome.

U svakom slučaju hvala na objašnjenju.

12 godina
neaktivan
offline
ASP.NET i baza

moze jos jedno pitanje?

treba se izvrsiti provjera da li je vozilo koje se uzme s dropdown liste slobodno između dva datuma.

Na slikama se vidi kako sam pisao u CodeBehind i DBBLcs klasi.

U SQL tablica VoziloStatus: StatusID(PK),Vozilo(FK),DatumOd,DatumDo,Status

Kako bi se ovo moglo riješiti?

Unaprijed hvala.

 

u Codebehind u Codebehind
u DBBL klasi u DBBL klasi
Poruka je uređivana zadnji put sub 1.6.2013 7:39 (dave1989).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: ASP.NET i baza

Na promjenu stavke iz dropdowna staviš event, i tu tražiš to vozilo u bazi i gledaš datum njegove registracije, a na formi za rezervaciju valjda imaš textboxove za datume za koje planiraš rezervisati vozilo. I onda gledaš da li je u tome intervalu.

12 godina
neaktivan
offline
Re: ASP.NET i baza

Evo pokušao sam nešto ovako,al ne valja

De ako ti nije problem reci di griješim u kodu?

slika slika
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice