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
- Kreiraj klasu Konekcija i u njoj napiši
GetCommand()
metodu za povezivanje na bazu Northwind i izvršavanje uskladištenih procedura. - Kreiraj klasu Proizvod i:
- postavi get/set za
int ProductID
,string ProductName
idouble 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.
- postavi get/set za
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;
}
}
}