Skip to content

Zadatak za 5

Kreiraj uskladištenu proceduru usp_Kontrolni u bazi podataka Northwind.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_Kontrolni]
@akcija AS INT = null, @pName AS VARCHAR(40) = null, @uPrice AS MONEY = null AS

IF(@akcija=0)
BEGIN
SET ROWCOUNT 5 SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice DESC
END

IF(@akcija=1)
BEGIN
INSERT INTO Products(ProductName, UnitPrice) VALUES (@pName, @uPrice)
DECLARE @rv AS INT SELECT @rv=MAX(ProductID) FROM Products RETURN @rv
END

GO

Kreiraj formu kao na slici (dodaj sledeće komponente: 1 TabControl, 1 DataGridView, 1 Chart, 2 Label, 2 TextBox, 1 Button). U kontrolama DataGridView i Chart potrebno je prikazati pet najskupljih proizvoda iz tabele Products. Klikom na dugme Dodaj potrebno je dodati slog u tabelu Products (ProductName i UnitPrice) gde je ProductName podatak tipa string iz kontrole textBox1 i UnitPrice podatak tipa double iz kontrole textBox2.

ZADATAK REŠI NA SLEDEĆI NAČIN

  1. Kreiraj klasu Konekcija i u njoj napiši GetCommand() metodu za povezivanje na bazu Northwind i izvršavanje uskladištenih procedura.
  2. Kreiraj klasu Proizvod i:
    • postavi get/set za int ProductID, string ProductName i double UnitPrice,
    • napiši metodu Prikaz() koja vraća tabelu sa kolonama ProductName i UnitPrice u kojima su upisani pet najskupljih proizvoda iz tabele Products. Koristi @akcija=0 iz uskladištene procedure usp_Kontrolni.
    • napiši metodu Dodaj() koja dodaje slog ProductName i UnitPrice u tabelu Products. Koristi @akcija=1 iz uskladištene procedure usp_Kontrolni.

Klikom na tab O programu u kontroli RichTextBox prikazati tekst kao na slici (umesto Radlovački Velimir napišite vaše prezime i ime).

i osigurati da korisnik aplikacije ne može da menja ili obriše taj tekst. Klikom na dugme Nazad prikazati tabPage1.

Klikom na tab Izlaz zatvara se aplikacija.

REŠENJE

Klasa Konekcija

using System.Data;
using System.Data.SqlClient;

namespace ZadatakZaPeticu
{
    class Konekcija
    {
        public static SqlCommand GetCommand()
        {
            SqlConnection con = new SqlConnection("Data Source=MAINFRAME\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            return cmd;
        }
    }
}

Klasa Proizvod

using System;
using System.Data;
using System.Data.SqlClient;

namespace ZadatakZaPeticu
{
    class Proizvod
    {
        public int ProductID { get; set; }
        public string ProductName { get; set; }
        public double UnitPrice { get; set; }

        public static DataTable Prikaz()
        {
            SqlCommand cmd = Konekcija.GetCommand();
            cmd.CommandText = "usp_Kontrolni";
            cmd.Parameters.AddWithValue("@akcija", 0);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            try
            {
                cmd.Connection.Open();
                da.Fill(dt);
                if (dt.Rows.Count > 0)
                {
                    return dt;
                }
                else throw new Exception("Nisu nadjeni podaci");
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                cmd.Connection.Close();
            }
        }

        public bool Dodaj()
        {
            SqlCommand cmd = Konekcija.GetCommand();
            cmd.CommandText = "usp_Kontrolni";
            cmd.Parameters.AddWithValue("@akcija", 1);
            cmd.Parameters.AddWithValue("@pName", this.ProductName);
            cmd.Parameters.AddWithValue("@uprice", this.UnitPrice);
            SqlParameter rv = new SqlParameter("@rv", SqlDbType.Int);
            rv.Direction = ParameterDirection.ReturnValue;
            cmd.Parameters.Add(rv);
            try
            {
                cmd.Connection.Open();
                int ok = cmd.ExecuteNonQuery();
                if (ok == 1)
                {
                    this.ProductID = (int)cmd.Parameters["@rv"].Value;
                    return true;
                }
                else throw new Exception("Podatak nije unesen u bazu");
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                cmd.Connection.Close();
            }
        }
    }
}

Form1

using System;
using System.Data;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace ZadatakZaTrojku
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) 
        {
            dataGridView1.DataSource = Proizvod.Prikaz();
            NacrtajGrafikon();
        }

        private void NacrtajGrafikon()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("kolona1");
            dt.Columns.Add("kolona2");
            foreach (DataGridViewRow red in dataGridView1.Rows)
            {
                int prvaKolona = 0;
                int drugaKolona = 1;
                dt.Rows.Add(red.Cells[prvaKolona].Value, red.Cells[drugaKolona].Value);
            }
            chart1.DataSource = dt;
            chart1.Series["Cene"].ChartType = SeriesChartType.Column;
            chart1.Series["Cene"].XValueMember = "kolona1";
            chart1.Series["Cene"].YValueMembers = "kolona2";
            chart1.Series["Cene"].IsValueShownAsLabel = true;
        }

        private void button1_Click(object sender, EventArgs e) 
        {
            Proizvod p = new Proizvod();
            p.ProductName = textBox1.Text;
            p.UnitPrice = Convert.ToDouble(textBox2.Text);
            if (p.Dodaj())
            {
                dataGridView1.DataSource = Proizvod.Prikaz();
                NacrtajGrafikon();
                MessageBox.Show("Podataci su uspešno upisani u bazu");
                textBox1.Text = "";
                textBox2.Text = "";
            }
            else
                MessageBox.Show("Podaci nisu upisani u bazu");
        }

        private void tabPage3_Enter(object sender, EventArgs e) // Zatvaram aplikaciju
        {
            Application.Exit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedTab = tabPage1;
        }
    }
}