Crearea bazei de date!
Recomand acest video
Ce se întâmplă mai exact?
Întâi adăugăm un fișier .mdb . El va stoca efectiv informațiile . Următorul pas este să definim schema bazei de date, adică tabelele, coloanele, tipurile de date din coloane și restricțiile.
Opțional se pot adăuga și proceduri stocate, însă acest lucru nu face parte din ceea ce vom discuta astăzi.
Conectarea la baza de date
Pentru a ne conecta la o bază de date avem nevoie de stringul de conectare ( connectionString ). El conține calea și setările de conectare către serverul de baze de date.
Putem crea stringul noi sau putem folosi un trick în Visual Studio, pe care î-l recomand și care s-a dovedit a fi eficient atât la examene, cât și în cadrul companiilor
Observați că stringul a fost adăugat în fișierul web.config.
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Pentru a ne conecta la baza de date folosing ConnectionString-ul, trebuie să cream un obiect de tipul SqlConnection.
// copy paste that string in your code and it will just work
SqlConnection m_connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
Recomand deschiderea și închiderea conexiunii pentru fiecare acțiune în parte.
Execuția comenzilor SQL
Non Query (Insert , Delete , Update )
//stringul SQL
string txt = "insert into rezervare(id_hotel,data_inceput,data_sfarsit,pret) values (@id,@start,@end,@suma)";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
// deschiderea conexiunii. Poate arunca Exceptie daca nu reuseste
conn.Open();
//crearea comenzi SQL
SqlCommand cmd = new SqlCommand(txt, conn);
//adaugarea parametrilor si definirea tipului lor
cmd.Parameters.Add(new SqlParameter("@id", TypeCode.String));
cmd.Parameters.Add(new SqlParameter("@start", SqlDbType.Date));
cmd.Parameters.Add(new SqlParameter("@end", SqlDbType.Date));
cmd.Parameters.Add(new SqlParameter("@suma", TypeCode.String));
//setarea valorilor parametrilor. Efectul este ca @id din string va fi inlocuit cu valoarea respectiva
cmd.Parameters["@id"].Value = ID;
cmd.Parameters["@start"].Value = start.ToShortDateString();
cmd.Parameters["@end"].Value = end.ToShortDateString();
cmd.Parameters["@suma"].Value = suma.ToString();
// executia si inchiderea conexiunii.
cmd.ExecuteNonQuery();
conn.Close();
Query
string txt = string.Format("select id,nume,lant_hotelier,stele from hotel where nume like '%{0}%'", TextBox1.Text);
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand(txt, conn);
//diferenta este ca folosim ExecuteReader()
SqlDataReader reader = cmd.ExecuteReader();
//si acum trebuie sa facem ceva cu datele obtinute. Trebuie sa generam cod HTML
FillTable(reader);
conn.Close();
private void FillTable(SqlDataReader reader)
{
// clear but keep the header . Am folosit un ASP table cu numele Table1.
TableRow th = Table1.Rows[0];
Table1.Rows.Clear();
Table1.Rows.Add(th);
//adaugam liniile pe rand
while (reader.Read())
{
TableRow row = new TableRow();
TableCell nume = new TableCell();
//luam valoarea din reader
nume.Text = reader.GetValue(1).ToString();
row.Cells.Add(nume);
TableCell lant = new TableCell();
lant.Text = reader.GetValue(2).ToString();
row.Cells.Add(lant);
TableCell stele = new TableCell();
stele.Text = reader.GetValue(3).ToString();
row.Cells.Add(stele);
Table1.Rows.Add(row);
}
}
//tableul din aspx
<asp:Table ID="Table1" runat="server>
<asp:TableHeaderRow BackColor=Aqua>
<asp:TableHeaderCell> Nume </asp:TableHeaderCell>
<asp:TableHeaderCell> Lant </asp:TableHeaderCell>
<asp:TableHeaderCell> Stele </asp:TableHeaderCell>
</asp:TableHeaderRow>
</asp:Table>
Exerciții
1) Vă recomand să implementați problema 3) din laboratorul anterior dar folosind baze de date în loc de XML file.
2) Folosind proiectul de la problema 1) creați o pagină secretă în care să fie afișati toti userii și emailurile lor.
Update 11 noiembrie:
Rezolvarile pot fi descărcate de aici.