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.