Insert,Update u C# i .NET
Prikazujem rezultate 1 do 17 od 17

Tema: Insert,Update u C# i .NET

  1. #1
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Insert,Update u C# i .NET

    Radi mi samo select i delete...Radio sam svoj primer za projekat koji moram da nosim profesoru...
    Ne izbacuje gresku,ali ne vrsi upis u bazu.Zatim sam probao sa primerom iz knjige.Isti slucaj.

    Dacu bolje primer iz knjige
    Kod:
    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;   //for MS Access
    
    namespace ebook2
    {
        public partial class Form1 : Form
        {
            private DataTable dataTable;
            private OleDbConnection conn;
            private OleDbDataAdapter dataAdapter;
            private DataSet ds;
            private int currRec = 0;
            private int totalRec=0;
            private bool insertSelected;
        
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
            private void FillControls()
            {
                txtID.Text=dataTable.Rows[currRec]["id"].ToString();
                txtName.Text=dataTable.Rows[currRec]["name"].ToString();
                txtLast.Text=dataTable.Rows[currRec]["lastname"].ToString();
                txtJob.Text=dataTable.Rows[currRec]["job"].ToString();
    
            }
    
            private void btnLoadTable_Click(object sender, EventArgs e)
            {
                //MS Access
                this.Cursor = Cursors.WaitCursor;
                string targetConnection="provider=Microsoft.Jet.OLEDB.4.0;data source=baza_krofni.mdb";
                conn=new OleDbConnection(targetConnection);
                string commandString="SELECT * FROM person";
                 dataAdapter=new OleDbDataAdapter(commandString,conn);
                 ds=new DataSet();
                dataAdapter.Fill(ds,"prog");
                dataTable=ds.Tables["prog"];
                currRec=0;
                totalRec=dataTable.Rows.Count;
                FillControls();
                InitalizeCommands();
                ToggleControls(true);
    
                this.Cursor=Cursors.Default;
    
                //btnNext.Enabled=true;
                //btnPrevious.Enabled=true;
    
    
            }
            private void InitalizeCommands()
            {
                // preparing insert OleDB command
                dataAdapter.InsertCommand = conn.CreateCommand();
                dataAdapter.InsertCommand.CommandText = "INSERT INTO person (id,name,lastname,job)" +
                                                      "VALUES (@id,@name,@lastname,@job)";
                AddParams(dataAdapter.InsertCommand, "id", "name", "lastname", "job");
    
                // preparing Update OleDB command
                dataAdapter.UpdateCommand = conn.CreateCommand();
                dataAdapter.UpdateCommand.CommandText = "UPDATE person SET name=@name,lastname=@lastname,job=@job WHERE id=@id";
                AddParams(dataAdapter.UpdateCommand, "id", "name", "lastname", "job");
    
                // preparing delete OleDB command
                dataAdapter.DeleteCommand = conn.CreateCommand();
                dataAdapter.DeleteCommand.CommandText = "DELETE FROM person WHERE id=@id";
                AddParams(dataAdapter.DeleteCommand, "id");
    
            }
            private void AddParams(OleDbCommand cmd, params string[] cols)
            {
    
                foreach (string col in cols)
                {
                    cmd.Parameters.Add("@" + col, OleDbType.Char, 0, col);
    
                }
            }
    
            private void ToggleControls(bool val)
            {
                txtID.ReadOnly = val;
                txtName.ReadOnly = val;
                txtLast.ReadOnly = val;
                txtJob.ReadOnly = val;
    
                btnLoadTable.Enabled = val;
                btnNext.Enabled = val;
                btnPrevious.Enabled = val;
                btnDeleteRecord.Enabled = val;
                btnEditRecord.Enabled = val;
                btnInsertRecord.Enabled = val;
    
                btnCancel.Enabled = !val;
                btnSave.Enabled = !val;
    
            }  
    
            private void btnNext_Click(object sender, EventArgs e)
            {
                currRec++;
                if (currRec >= totalRec)
                    currRec = 0;
                FillControls();
            }
    
            private void btnPrevious_Click(object sender, EventArgs e)
    
            {
                currRec--;
                if (currRec < 0)
                    currRec = totalRec - 1;
                FillControls();
            }
    
            private void btnEditRecord_Click(object sender, EventArgs e)
            {
                ToggleControls(false);
            }
    
            private void btnSave_Click(object sender, EventArgs e)
            {
                lblLabel.Text = "Save changes...";
                this.Cursor = Cursors.WaitCursor;
                DataRow row = dataTable.Rows[currRec];
                row.BeginEdit();
                row["id"] = Convert.ToInt32(txtID);
                row["name"] = txtName;
                row["lastname"] = txtLast;
                row["job"] = txtJob;
                row.EndEdit();
                dataAdapter.Update(ds, "prog");
                ds.AcceptChanges();
                ToggleControls(true);
                insertSelected=false;
                this.Cursor = Cursors.Default;
                lblLabel.Text = "Save changed";
    
    
            }
    
            private void btnCancel_Click(object sender, EventArgs e)
            {
                if (insertSelected)
                {
                    btnDeleteRecord_Click(null, null);
                    insertSelected = false;
                }
                FillControls();
                ToggleControls(true);
            }
    
            private void btnInsertRecord_Click(object sender, EventArgs e)
            {
                insertSelected = true;
                DataRow row = dataTable.NewRow();
                dataTable.Rows.Add(row);
                totalRec = dataTable.Rows.Count;
                    currRec=totalRec-1;
                row["id"]=totalRec;
                txtID.Text = totalRec.ToString();
                txtName.Text = "";
                txtLast.Text = "";
                txtJob.Text = "";
                ToggleControls(false);
    
    
            }
    
            private void btnDeleteRecord_Click(object sender, EventArgs e)
            {
                DialogResult res = MessageBox.Show("Da li sigurno brisete \n", "Potvrdi\n", MessageBoxButtons.YesNo);
                if (res == DialogResult.Yes)
                {
                    DataRow row=dataTable.Rows[currRec];
                    row.Delete();
                    dataAdapter.Update(ds, "prog");
                    ds.AcceptChanges();
                    lblLabel.Text = "Record Deleted";
                    totalRec--;
                    currRec = totalRec - 1;
                    FillControls();
    
                }
            }
        }
    }
    A gresku koju javlja

    Unable to cast object of type 'System.Windows.Forms.TextBox' to type 'System.IConvertible'.
    // Ukazuje na red

    row["id"] = Convert.ToInt32(txtID);

    Pre nego sto sam dodao ToInt32 ,javljao je istu gresku sa dodatkom da ocekuje convert ToInt32,a kada sam uradio skoro ista prica...

    Svoj primer bolje da ne stavljam.Baza mi se nalazi u Debug pored exe verzije....
    Jel ima neko ideju.Mislim da je ovo osnova povezivanja sa bazom,sta bi bilo da radim nesto komplikovanije...
    Poslednji put ažurirao/la red boy : 28.10.2008. u 08:11



  2. #2
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    Na prvi pogled, ne možeš da kažeš: row["id"] = Convert.ToInt32(txtID); , zato što je txtID objekat, stavi row["id"] = Convert.ToInt32(txtID.Text)!

  3. #3
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    U pravu si...
    Ima jos jedan problem.Sve radi osim Update,a meni je to najvaznije ...
    Sta tu moze da skripi??

  4. #4
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    Na InitializeCommands() promeni Update command sa

    // preparing Update OleDB command
    dataAdapter.UpdateCommand = conn.CreateCommand();
    dataAdapter.UpdateCommand.CommandText = "UPDATE person SET name=@name,lastname=@lastname,job=@job WHERE id=@id";
    AddParams(dataAdapter.UpdateCommand, "name", "lastname", "job");

    OleDbParameter workParm = dataAdapter.UpdateCommand.Parameters.Add("@id", OleDbType.Integer);
    workParm.SourceColumn = "id";
    workParm.SourceVersion = DataRowVersion.Original;

  5. #5
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Radi ... Hvala
    Samo jel moze malo pojasnjenje.Zasto mi nije radilo,posto su primeri iz knjige??
    I jos jedno pitanje.Radim obican select ,ali mi javlja gresku.Nece da proradi kod
    WHERE LIKE ;
    Kod:
    string all = dates +""+" LIKE "+"" +"'"+values+"'";
                string S1targetConnection = "provider=Microsoft.Jet.OLEDB.4.0;data source=book.mdb";
                S1conn = new OleDbConnection(S1targetConnection);
                
    
                string S1commandString = "SELECT * FROM member WHERE @alls ";
                OleDbCommand SearchCommand = S1conn.CreateCommand();
               
                // definisanje vrednosti
                SearchCommand.Parameters.Add("@alls", OleDbType.Char, 50);
                SearchCommand.Parameters["@alls"].Value = all;
    dates i values ,mi uredno prenose vrednosti,Npr " name" i "jovana".Proverio preko label.Text.
    Problem sto mi uvek prvog ucita iz baze,ne radi LIKE.
    Poslednji put ažurirao/la red boy : 29.10.2008. u 17:15

  6. #6
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    E, sad, što se tiče objašnjenja, nisam mnogo ulazio u problematiku zašto. Ono što sam ja dobio kao objašnjenje je to, da .Net radi sa kopijom, odnosno dataset je kopija podataka originalne baze, pa u update-u moraš eksplicitno da navedeš koja je to originalna verzija! Ja sam to prihvatio i, iskreno, nisam se ni potrudio da pronađem pravi odgovor!! A drugo pitanje mi nije najjasnije, LIKE formiraš kao %values% ako hoćeš da ti izbaci sve zapise u kojima se, u koloni "name", bilo gde pojavljuje npr. "jovana"! Jesi li probao da napraviš query u bazi da vidiš šta ti vraća? Okači bazu sa nekim, bezveze, podacima.

  7. #7
    Ističe se
    Učlanjen
    01.07.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    2.774
    Reputaciona moć
    78

    Podrazumevano Re: Insert,Update u C# i .NET

    Probajte sa:

    WHERE x LIKE '%deo vrednosti%'
    Čiste ruke
    Hladna glava
    I vatreno srce

  8. #8
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Citat Original postavio Pjer_Nis Pogledaj poruku
    Probajte sa:

    WHERE x LIKE '%deo vrednosti%'
    Ma moze i sa jedno % . Ako stavis na pocetak %,to znaci sve sto pocinje sa Jov,recimo.A ako stavis
    %Jov% ,onda gleda i reci koje u sebi sadrze Jov.
    Ma postavicu ceo projket sa bazom,lakse je za vas.Inace ovaj deo je nezavisan od gornjeg...Ovaj sluzi samo kao pretraga..
    http://rapidshare.com/files/159331288/userGrid.zip.html

  9. #9
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    A što tako ? Tebi radi like, al ti ne radi prosleđivanje parametara u query!! Evo ti rešenje:
    string S1commandString = "SELECT * FROM member WHERE " + all;
    Formiraš svoj WHERE uslov i proslediš u upit, bar ja tako radim

  10. #10
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Radi... puno hvala.Sada vec mogu da uradim i za knjige i da povezem forme.
    Mada si mogao primetiti po onoj Labeli ,lblInfo,da mi je parametre prosledjivao...
    neznam sto onako nije sljakalo...
    Jos jedno pitanje vezano za prvi projekat.Ako treba stavicu isto kod.Pravio sam meni,I za File,radi close();
    ili resimo radi MessageBox();
    Ali... U aplikaciji sam napravio dugme dodaj novog clana.Kada kliknem na njega pokrece se samo jedan red kod,pozivanje funkcije NewAdd();
    Ona ispisuje Prazne TextBox-ove,panele,i button Save.U svakom slucaju radi lagano.
    Onda sam otisao u meni,napravio stavku "Novi Clan",dva puta kliknuo na nju,i isto dodao ovaj red kao za button.
    Problem je kada pokrenem aplikaciju,i kliknem u File/Novi Clan,nista se ne pokrece...Kao da nisam stavio kod.
    A kod dugmete radi bez problema,isti kod.
    Poslednji put ažurirao/la red boy : 31.10.2008. u 18:27

  11. #11
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    Dodeljuje ti vrednosti, ali ne prosleđuje dobro, odnosno ne znam da li uopšte možeš da tako napišeš u Accessu! Može nešto ovako: name LIKE @alls , pa parametru proslediš vrednost, to je ok, ali za ovo ne znam kako se izvodi!! Ja kad radim sa Access-om, radim onako kako sam ti već rekao, napravim svoj WHERE i dodam na upit!! Što se tiče ovog drugug, možeš da okačiš kod, al pre toga proveri da li ti je event click, da li na klik uopšte ulazi u proceduru (po onome što si ti rekao ne ulazi)!

  12. #12
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Kod:
     private void oProgramuToolStripMenuItem_Click(object sender, EventArgs e)
            {
                
                
                MessageBox.Show("Predmet: .NET Tehnologije \n \n"+
                                "Student: ****  \n \n"+
                                "Naziv projekta: Biblioteka \n \n"+
                                "Programcki jezik: C#");
            }
    
            private void izađiToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Close();
            }
    
            private void dodajČlanaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ViewControls(3);
    
            }
    a treba funkcija da pozove ovo

    txtIDmember.ReadOnly = false;
    txtUserName.BackColor = System.Drawing.Color.Gainsboro;
    txtUserLast.ReadOnly = false;
    txtLocation.ReadOnly = false;
    txtStreet.ReadOnly = false;
    txtStreetNum.ReadOnly = false;
    txtBorn.BackColor = System.Drawing.Color.Gainsboro;
    txtSerial.BackColor = System.Drawing.Color.Gainsboro;
    txtBookName.BackColor = System.Drawing.Color.Gainsboro;
    txtExpired.ReadOnly = false;
    txtIDbook.ReadOnly = false;
    txtBookDate.ReadOnly = false;
    btnEditSaveUser.Visible = true;

  13. #13
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    Ovo će ovako da ti radi, ako napraviš proceduru ViewControls i staviš u nju ovaj kod što si napisao. Čemu ti služi parametar u proceduri, jedino tu može da ti bude greška? Daj tvoju verziju ViewControls

  14. #14
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Napravio sam za slucajeve koji su mi potrebni...

    Kod:
    public void ViewControls(int x) // Ponasanje kontrola TextBox
            {
                int y=x;
                if ( y==1)
                {
                    txtIDmember.ReadOnly = true;
                    txtUserName.ReadOnly = true;
                    txtUserLast.ReadOnly = true;
                    txtLocation.ReadOnly = true;
                    txtStreet.ReadOnly = true;
                    txtStreetNum.ReadOnly = true;
                    txtBorn.ReadOnly = true;
                    txtSerial.ReadOnly = true;
                    txtExpired.ReadOnly = true;
                    txtBookDate.ReadOnly = true;
                    txtIDbook.ReadOnly = true;
                    txtBookName.ReadOnly = true;
                    txtUserName.BackColor = System.Drawing.Color.White;
                    txtBorn.BackColor = System.Drawing.Color.White;
                    txtSerial.BackColor = System.Drawing.Color.White;
                    txtBookName.BackColor = System.Drawing.Color.White;
                }
                if (y== 2)
                {
                    txtIDmember.ReadOnly = false;
                    txtUserName.ReadOnly = false;
                    txtUserLast.ReadOnly = false;
                    txtLocation.ReadOnly = false;
                    txtStreet.ReadOnly = false;
                    txtStreetNum.ReadOnly = false;
                    txtBorn.ReadOnly = false;
                    txtSerial.ReadOnly = false;
                    txtExpired.ReadOnly = false;
                    txtBookDate.ReadOnly =false;
                    txtIDbook.ReadOnly = false;
                    txtBookName.ReadOnly = true;
                    txtBookName.BackColor = System.Drawing.Color.Gainsboro;
                }
                if (y== 3)
                {
                    txtIDmember.ReadOnly = false;
                    txtUserName.BackColor = System.Drawing.Color.Gainsboro;
                    txtUserLast.ReadOnly = false;
                    txtLocation.ReadOnly = false;
                    txtStreet.ReadOnly = false;
                    txtStreetNum.ReadOnly = false;
                    txtBorn.BackColor = System.Drawing.Color.Gainsboro;
                    txtSerial.BackColor = System.Drawing.Color.Gainsboro;
                    txtBookName.BackColor = System.Drawing.Color.Gainsboro;
                    txtExpired.ReadOnly = false;
                    txtIDbook.ReadOnly = false;
                    txtBookDate.ReadOnly = false;
                    btnEditSaveUser.Visible = true;
                }
    
    
            }
    Boja je potrebna,jer pri edit-u,textbox-ovi kojima je zabranjen edit menjaju boju.a kasnije pri ponoovnom ulasku boja mora da im se vrati ,da bude ista kao i u ostalim poljima..Recimo pri Update,ime osobe nece da se menja a prezime moze..
    Poslednji put ažurirao/la red boy : 01.11.2008. u 12:22

  15. #15
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: Insert,Update u C# i .NET

    Ne znam šta da ti kažem, ovo ti radi. Ovako kako si napisao, tako i radi! I na button_click i na dodajČlanaToolStripMenuItem_Click!

  16. #16
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Pogledaj u tvoj editor...Evo i tog projekta...

    http://www.megaupload.com/?d=V61MLO5B

  17. #17
    Zainteresovan član red boy (avatar)
    Učlanjen
    06.10.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    346
    Reputaciona moć
    52

    Podrazumevano Re: Insert,Update u C# i .NET

    Pozvao sam pogresnu funkciju

Slične teme

  1. Insert sim card...
    Autor Superior u forumu Mobilna telefonija
    Odgovora: 2
    Poslednja poruka: 18.05.2007., 00:11
  2. MS SQL 2000 export as insert
    Autor BeeKey u forumu Programiranje
    Odgovora: 2
    Poslednja poruka: 03.06.2006., 19:44
  3. Word automatic insert/date&time
    Autor manoval u forumu Softver
    Odgovora: 1
    Poslednja poruka: 16.08.2005., 00:59
  4. ;Iskra Oglas Auto Insert System
    Autor ;Iskra Oglas Auto Insert u forumu Programiranje
    Odgovora: 2
    Poslednja poruka: 07.10.2004., 17:40
  5. Please insert The first syberia 2 cd-rom
    Autor Znojavi Kvorum u forumu Video igre
    Odgovora: 4
    Poslednja poruka: 05.08.2004., 15:45

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •