Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# pocetak u programiranju(ADO)

[es] :: .NET :: C# pocetak u programiranju(ADO)

[ Pregleda: 3613 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

aleksacyber
Aleksandar Pavlovic
Radnik
Bosna i Hercegovina

Član broj: 198141
Poruke: 22
91.191.15.*



+3 Profil

icon C# pocetak u programiranju(ADO)20.10.2008. u 11:09 - pre 188 meseci
Potpuni pocetnik u programiranju inace.
Pokusavam nesto da vjezbam sa ado i bazama podataka. Ne mogu da natjeram racunar da mi radi update, insert i delete komande. Molim za pomoc gdje grijesim. Koristim Northwind.mdb bazu kao primjer.
Sledece sam do sada uradio:

Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Ucenje_north
{
    public partial class Form1 : Form
    {
        private string cn_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Baze\\Northwind.mdb";

        private OleDbConnection cn;
        private OleDbCommand select_cmd;
        private OleDbCommand update_cmd;
        private OleDbCommand delete_cmd;
        private OleDbCommand insert_cmd;
        private OleDbDataAdapter da;
        private DataSet ds;
        private DataTable dt;

        public Form1()
        {
            InitializeComponent();

            cn = new OleDbConnection(cn_string);
            
            string select_string = "SELECT * FROM Customers";
            string update_string = "UPDATE Customers SET CompanyName=?, ContactName=?, ContactTitle=?, Address=?, City=?, Region=?, PostalCode=?, Country=?, Phone=?, Fax=? WHERE CustomerID=?";
            string delete_string = "DELETE Customer WHERE CustomerID=?";
            string insert_string = "INSERT INTO Customers (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax) VALUES(?,?,?,?,?,?,?,?,?,?,?)";

            select_cmd = new OleDbCommand(select_string, cn);
            update_cmd = new OleDbCommand(update_string, cn);
            delete_cmd = new OleDbCommand(delete_string, cn);
            insert_cmd = new OleDbCommand(insert_string, cn);
        }

        private void ucitajParametre(OleDbCommand cmd)
        {
            cmd.Parameters.Add("@CustomerID", OleDbType.VarChar);
            cmd.Parameters.Add("@CompanyName", OleDbType.VarChar);
            cmd.Parameters.Add("@ContactName", OleDbType.VarChar);
            cmd.Parameters.Add("@ContactTitle", OleDbType.VarChar);
            cmd.Parameters.Add("@Address", OleDbType.VarChar);
            cmd.Parameters.Add("@City", OleDbType.VarChar);
            cmd.Parameters.Add("@Region", OleDbType.VarChar);
            cmd.Parameters.Add("@PostalCode", OleDbType.VarChar);
            cmd.Parameters.Add("@Country", OleDbType.VarChar);
            cmd.Parameters.Add("@Phone", OleDbType.VarChar);
            cmd.Parameters.Add("@Fax", OleDbType.VarChar);
        }

        private void podesiParametre(OleDbCommand cmd)
        {
            cmd.Parameters["@CustomerID"].Value = customerIDTextBox.Text;
            cmd.Parameters["@CompanyName"].Value = companyNameTextBox.Text;
            cmd.Parameters["@ContactName"].Value = contactNameTextBox.Text;
            cmd.Parameters["@ContactTitle"].Value = contactTitleTextBox.Text;
            cmd.Parameters["@Address"].Value = addressTextBox.Text;
            cmd.Parameters["@City"].Value = cityTextBox.Text;
            cmd.Parameters["@Region"].Value = regionTextBox.Text;
            cmd.Parameters["@PostalCode"].Value = postalCodeTextBox.Text;
            cmd.Parameters["@Country"].Value = countryTextBox.Text;
            cmd.Parameters["@Phone"].Value = phoneTextBox.Text;
            cmd.Parameters["@Fax"].Value = faxTextBox.Text;
        }

        private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.customersBindingSource.EndEdit();
            this.customersTableAdapter.Update(this.dsCustomers.Customers);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'dsCustomers.Customers' table. You can move, or remove it, as needed.
            this.customersTableAdapter.Fill(this.dsCustomers.Customers);

        }

        private void button3_Click(object sender, EventArgs e) //za novi unos
        {
            customerIDTextBox.Text = "";
            companyNameTextBox.Text = "";
            contactNameTextBox.Text = "";
            contactTitleTextBox.Text = "";
            addressTextBox.Text = "";
            cityTextBox.Text = "";
            regionTextBox.Text = "";
            postalCodeTextBox.Text = "";
            countryTextBox.Text = "";
            phoneTextBox.Text = "";
            faxTextBox.Text = "";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            customersBindingSource.MoveNext();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            customersBindingSource.MovePrevious();
        }

        private void button6_Click(object sender, EventArgs e) //za update, naravno.
        {
            cn.Open();
            ucitajParametre(update_cmd);
            podesiParametre(update_cmd);
            try
            {

                int r = update_cmd.ExecuteNonQuery();
                MessageBox.Show(r.ToString());
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            finally
            {
               
                cn.Close();
            }
        }

        private void button5_Click(object sender, EventArgs e) //za delete
        {
            cn.Open();
            ucitajParametre(delete_cmd);
            podesiParametre(delete_cmd);

            try
            {
                int r = delete_cmd.ExecuteNonQuery();
                MessageBox.Show(r.ToString());
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            finally
            {
                cn.Close();
            }
        }

    }
}




Poruke koje dobijam su "No value given for one or more parameters."
ili "Syntax error" za delete komandu, nesto nije uredu sa dijelom od Where pa dalje.

Pozdrav svima.

[Dodati code tagovi.]

[Ovu poruku je menjao Shadowed dana 20.10.2008. u 12:40 GMT+1]
alexa
 
Odgovor na temu

avox
Beograd@Srbija

Član broj: 34116
Poruke: 81
*.adsl-a-1.sezampro.yu.

Sajt: www.tursija.com


Profil

icon Re: C# pocetak u programiranju(ADO)21.10.2008. u 18:56 - pre 188 meseci
Pozdrav!

Northwind je koliko ja znam sql baza i ti siturno koristis MS SQL Server. Interesuje me zasto kostitis OLDB, ako se radi o SQL bazi?
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
91.148.95.*

ICQ: 20785904


+4 Profil

icon Re: C# pocetak u programiranju(ADO)21.10.2008. u 22:15 - pre 188 meseci
bez ulazenja preterano u nacin sadrzaj i ostalo, ono sto se na prvi pogled vidi je da ti ne valjaju sqlcommands
ovi silni upitnici ti ne valjaju - nemoguce je razresiti koji parametar treba da dodje na koje mesto...
umesto upitnika ubaci ova imena koja si koristio u definiciji sql parametara...

string update_string = "update bla_bla set CompanyName = @CompanyName ... "

i te fore sa setovanjem parametara su totalno nepregledne, ja koristim ovakav stil:
Code:

string naredba = "select a,b,c from tabela where a=@1";
SqlCommand  komanda = new Sqlcommand(naredba);
komanda.Parameters.Add(new SqlParameter("@1",SqldbType.Int)).Value = aId;


e i sto rece prethodnik, batali Oledb, koristi Sqlklase (SqlConnection, SqlCommand, SqlDataAdapter... , namespace System.Data.SqlClient)
 
Odgovor na temu

aleksacyber
Aleksandar Pavlovic
Radnik
Bosna i Hercegovina

Član broj: 198141
Poruke: 22
91.191.15.*



+3 Profil

icon Re: C# pocetak u programiranju(ADO)22.10.2008. u 05:55 - pre 188 meseci
sada ne znam, uzeo sam Northwind iz MS direktorija i ima ekstenziju mdb.
nije sql verzija koliko znam. A ne znam zasto, oledb mi je nekako laksi, kada zavrsim sve, lakse mi je sve to upakovati i odnijeti negdje nego kada koristim
sql bazu inace sam nesto malo radio i u sql serveru.
alexa
 
Odgovor na temu

aleksacyber
Aleksandar Pavlovic
Radnik
Bosna i Hercegovina

Član broj: 198141
Poruke: 22
*.com
Via: [es] mailing liste



+3 Profil

icon Re: C# pocetak u programiranju(ADO)22.10.2008. u 06:02 - pre 188 meseci
>
U svakom slucaju hvala.
Pokusacu nesto da uradim pa cu da javim kako je ispalo. :)
Pozdrav.
alexa
 
Odgovor na temu

aleksacyber
Aleksandar Pavlovic
Radnik
Bosna i Hercegovina

Član broj: 198141
Poruke: 22
91.191.15.*



+3 Profil

icon Re: C# pocetak u programiranju(ADO)23.10.2008. u 07:25 - pre 188 meseci
Za sada sam odustao od parametara i ostalih stvari. Dosta lakse mi ide koristenje dataseta koji se automatski stvori kada se povezem sa nekom bazom.
Nesto sam napravio pa me interesuje misljenje drugih.

Imam klasu Promjeni()

public class Pretvori
{
private double _vrijednost;
private double _kurs;
private double _total;
private double _iznos;

public Pretvori()
{
_kurs = 1.9558;
}

public double Vrijednost
{
get { return _vrijednost; }
set { _vrijednost = value; }
}

public double Kurs
{
get { return _kurs; }
set { _kurs = value; }
}

public double Iznos
{
get { return _iznos; }
set { _iznos = value; }
}

public double KM_EUR()
{
_total = _vrijednost * _kurs;

return _total;
}

public static string izracunajIznos(TextBox t, DataTable d, string c)
{
return t.Text = d.Compute("Sum(" + c + ")", string.Empty).ToString();
}


}

a nju koristim za formu

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Ucenje_north
{
public partial class md : Form
{
DataTable dtProdukti;
Pretvori p;

public md()
{
InitializeComponent();
dtProdukti = new DataTable();
dtProdukti = dsUkupno.Products;
p = new Pretvori();
}

private void md_Load(object sender, EventArgs e)
{
this.suppliersTableAdapter.Fill(this.dsUkupno.Suppliers);
ucitajProdukte();
Tekstovi();
pretvoriUKM();
}

private void izracunajPrice()
{
textBox1.Text = dtProdukti.Compute("SUM(UnitPrice)", string.Empty).ToString() + " KM";

textBox2.Text = dtProdukti.Compute("SUM(UnitsInStock)", string.Empty).ToString() + " KOM.";

textBox3.Text = dtProdukti.Compute("Sum(UnitsOnOrder)", string.Empty).ToString() + " KOM.";
}

private void pregledajText()
{
if (textBox1.Text == "0 KM") { textBox1.BackColor = Color.Red; }
else
{
textBox1.BackColor = Color.White;
}

if (textBox2.Text == "0 KOM.") { textBox2.BackColor = Color.Red; }
else
{
textBox2.BackColor = Color.White;
}
if (textBox3.Text == "0 KOM.") { textBox3.BackColor = Color.Red; }
else
{
textBox3.BackColor = Color.White;
}
}

private void ocistiText()
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
}

private void Tekstovi()
{
ucitajProdukte();
ocistiText();
izracunajPrice();
pregledajText();
pretvoriUKM();
}



private void ucitajProdukte()
{
this.productsTableAdapter.iz(dsUkupno.Products, int.Parse(supplierIDTextBox.Text));
}

private void bindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
{
Tekstovi();
}

private void bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
{
Tekstovi();
}

private void snimi()
{
this.Validate();
this.suppliersBindingSource.EndEdit();
this.productsBindingSource.EndEdit();
this.suppliersTableAdapter.Update(dsUkupno.Suppliers); this.productsTableAdapter.Update(dsUkupno.Products);
}

private void suppliersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
snimi();
Tekstovi();
}

private void pretvoriUKM()
{
string valuta = dtProdukti.Compute("SUM(UnitPrice)",string.Empty).ToString();

p.Vrijednost = double.Parse(valuta);
textBox4.Text = p.KM_EUR().ToString() + " EUR";

}


}
}



Znaci interesuje me misljenje o ovome. Znam da je pocetnicki, ali da li ovakav kod ili izvedba moze da prodje, barem za pocetnika.

P.S.
ovo "iz", je query koji sam napravi u designeru, tako ta mi poveze datagridview sa master formom (u pitanju je suppliers-master i products-detail).
tri text boxa su sume kolona iz grida, a cetvrti text box je pretvaranje u euro.
Valjda sam sve dobro objasnio.
Sve ovo radim zato sto moram da imam grid iz kojeg cu da sabiram pojedine kolone.

alexa
 
Odgovor na temu

[es] :: .NET :: C# pocetak u programiranju(ADO)

[ Pregleda: 3613 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.