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

Razni problemi koje ne znam da resim - C# & SQL

[es] :: .NET :: .NET Desktop razvoj :: Razni problemi koje ne znam da resim - C# & SQL

[ Pregleda: 2447 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mizob

Član broj: 13465
Poruke: 1108
*.rcub.bg.ac.yu.



+5 Profil

icon Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 20:07 - pre 195 meseci
Za ispit treba da uradim aplikaciju za video klub, dodavanje clanova, kaseta,iznajmljivanje, sve sto jedan klub treba da ima.
I evo, vec imam prvi problem, koju ne znam kako da otklonim..(a identican zadatak sam radio pre 3 god, samo nema vise tog koda )..pa ako moze neko strucniji da pomogne.

Dizajnirao sam veci deo GUI, napravio klasu Clan, koja sadrzi podatke o clanu, i ima metodu dodajClana, koja treba da upise podatke o novom clanu u tabelu.
Kada se popune text boxovi(ime,prezime,itd...) za dodavanje novog clana, klikne se dugme dodaj, podaci se ne upisu u bazu, i nije mi jasno zasto se ne upisu, pa ako moze pomoc?

klasa Clan:
Code:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Text;
using System.Data.SqlClient;

namespace Video_Klub
{
    class Clan
    {
        private string m_ime, m_prezime, m_adresa, m_telefon;
        private int m_br_clana;
        private double m_zaduzenje;
        private string m_jmbg;
        private DateTime m_datum_uclanjenja;

        public string ime
        {
            get
            {
                return m_ime;
            }
            set
            {   if(value.Length>2)
               m_ime = value;
            }
        }
        public string prezime
        {
            get
            {
                return m_prezime;
            }
            set
            {
                if (value.Length > 3)
                    m_prezime = value;
            }
        }
        public string telefon
        {
            get
            {
                return m_telefon;
            }
            set
            {
                if (value.Length > 4)
                    m_telefon = value;
            }
        }
        public string adresa
        {
            get
            {
                return m_adresa;
            }
            set
            {
                if (value.Length > 10)
                {
                    m_adresa = value;
                }
            }
        }
        public string jmbg
        {
            get
            {
                return m_jmbg;
            }
            set
            {
                if (value.Length > 12)
                {
                    m_jmbg = value;
                }
            }
        }
        public DateTime datum_Uclanjenja
        {
            get
            {
                return m_datum_uclanjenja;
            }
            set
            {
                m_datum_uclanjenja = value;
            }
        }

        public Clan(string _ime, string _prezime, string _adresa, string _telefon, string _jmbg)
        {
            this.m_ime = _ime;
            this.m_prezime = _prezime;
            this.m_adresa = _adresa;
            this.m_telefon = _telefon;
            this.m_jmbg = _jmbg;
            this.m_datum_uclanjenja = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day); 
            this.m_zaduzenje = 0; 
        }

            //pri pozivanju ove funkcije, ne desava se nikakva promena u bazu, koristim VS2005 sa instaliranim SQL express
        public string UpisiClanaUBazu(string _connString )
        {
            SqlConnection konekcija1 = new SqlConnection(_connString);

            SqlCommand komanda1 = new SqlCommand();
            komanda1.Connection = konekcija1; //komanda gleda u konekciju1

            String tekst1 = "insert into clanovi (ime,prezime,adresa,telefon,zaduzenje,jmbg,datum_uclanjenja) values('" + m_ime + " ' , ' " + m_prezime + " ' , ' " + m_adresa + " ',' " + m_telefon + " ', " + m_zaduzenje + " ,' " + m_jmbg + " ',' " + m_datum_uclanjenja.Date + "')";
            
            komanda1.CommandText = tekst1;
            komanda1.CommandType = System.Data.CommandType.Text;

            konekcija1.Open();
            komanda1.ExecuteNonQuery();
            konekcija1.Close(); 
            //salje nazad upit koji sam poslao bazi, mislio sam da nije tu problem, ali deluje sasvim ok
            return (tekst1);
        }
    }
}


Kod forme:

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.Configuration;

namespace Video_Klub
{
    public partial class Form1 : Form
    {
        public void SakriPanele(Panel a)
        {
            List<Panel>lista = new List<Panel>();
            lista.Add(panelPretragaClana);
            lista.Add(panelUpisClana);
            lista.Add(panelUpisFilma);
            lista.Add(panelPretragaFilmova);

            for(int i = 0; i < lista.Count; i++)
            {
               if(lista[i].Name.ToString() != a.Name.ToString())
               {
                   lista[i].Visible=false;
               }
               else
               {
                   lista[i].Visible = true;
               }
            }
        }

        public Form1()
        {
            InitializeComponent();            
        }

        private void izadjiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void upisNovogClanaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SakriPanele(panelUpisClana);            
        }

        private void pretragaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SakriPanele(panelPretragaClana);
        }

        private void dodajNoviToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SakriPanele(panelUpisFilma);
        }

        private void pretraziToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SakriPanele(panelPretragaFilmova);
        }

        //ovde se poziva funkcija da se clan upise u bazu
        private void btnUpisi_Click(object sender, EventArgs e)
        {
            Clan noviClan = new Clan(txbIme.Text, txbPrezime.Text, txbAdresa.Text.ToString(), txbTelefon.Text.ToString(), txbJmbg.Text.ToString());
            string connString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
                   
            label6.Text = (label6.Text + noviClan.UpisiClanaUBazu(connString)); 
        }

    }
}


Zaboravih da napomenem da u tabeli Clanovi imaju polja br_clana(autoincrement), ostali podaci su svi navedeni u stringu tekst1, svi su nchar, osim zaduzenje(real) i datum_uclanjenja(datetime).


Evo ceo solution ako nekome treba: http://www.sendspace.com/file/1ea52c
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-a-1.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 21:54 - pre 195 meseci
Aj probaj "prazan" insert into da uradiš, znači upiši samo vrednost za npr. ime pa vidi dal' radi...
Nisi treba da kuckaš ovako:
Code:

"insert into clanovi (ime,prezime,adresa,telefon,zaduzenje,jmbg,datum_uclanjenja) values('" + m_ime + " ' , ' " + m_prezime + " ' , ' " + m_adresa + " ',' " + m_telefon + " ', " + m_zaduzenje + " ,' " + m_jmbg + " ',' " + m_datum_uclanjenja.Date + "')";

nego da sve te promenljive dodaješ pomoću komanda1.Parameters.AddWithValue( ). Tako je teže pogrešiti.

A i ovo je čudnovato:
Code:

...
Clan noviClan = new Clan(txbIme.Text, txbPrezime.Text, txbAdresa.Text.ToString(),   ...

Zašto ima ono ToString()?


E da, ako koristiš autonumber da bi dobio broj redova onda možeš da dobiješ netačan rezultat. Npr. dodaš tri reda a onda obrišeš prva dva, pa dodaš još jedan. Autonumber neće dati broj dva za taj novi red.
Ako hoćeš da izbrojiš nešto može preko SELECT COUNT komande.
 
Odgovor na temu

mizob

Član broj: 13465
Poruke: 1108
*.rcub.bg.ac.yu.



+5 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 22:19 - pre 195 meseci
Citat:
toxi_programer: Aj probaj "prazan" insert into da uradiš, znači upiši samo vrednost za npr. ime pa vidi dal' radi...
Nisi treba da kuckaš ovako:
Code:

"insert into clanovi (ime,prezime,adresa,telefon,zaduzenje,jmbg,datum_uclanjenja) values('" + m_ime + " ' , ' " + m_prezime + " ' , ' " + m_adresa + " ',' " + m_telefon + " ', " + m_zaduzenje + " ,' " + m_jmbg + " ',' " + m_datum_uclanjenja.Date + "')";

nego da sve te promenljive dodaješ pomoću komanda1.Parameters.AddWithValue( ). Tako je teže pogrešiti.

Probao sam, pa nece...ukoliko izostavim neku kolunu koja je obavezna, izbacuje mi se greska, tako da pretpostavljam da je s konekcijom u redu..
Evo koda, mozda sam izostavio nesto, pa zato nece..

Code:

public void UpisiClanaUBazu(string _connString )
        {
            SqlConnection konekcija1 = new SqlConnection(_connString);

            SqlCommand komanda1 = new SqlCommand();
            komanda1.Connection = konekcija1; //komanda gleda u konekciju1

           
            komanda1.Parameters.AddWithValue(ime, "Milos");
            komanda1.Parameters.AddWithValue(prezime, "Zobenica");
            komanda1.Parameters.AddWithValue(adresa, "Gunudliceva 22121");
            komanda1.Parameters.AddWithValue(telefon, "3233232");
            komanda1.Parameters.AddWithValue(jmbg, "12312321123");
                        //polja koja nisu popunjena sam stavio da mogu da budu null

            komanda1.CommandType = System.Data.CommandType.Text;

            konekcija1.Open();
            komanda1.ExecuteNonQuery();
            konekcija1.Close();   
        }



Citat:

A i ovo je čudnovato:
Code:

...
Clan noviClan = new Clan(txbIme.Text, txbPrezime.Text, txbAdresa.Text.ToString(),   ...

Zašto ima ono ToString()?


toString()
Sluzi da se napravi string, mislio sam da mozda nece biti string, ali to je totalno nebitno sada



 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-a-1.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 23:16 - pre 195 meseci
Ovako ćeš, pošto ja ne mogu da probam jer ne mogu kod mene da izmenim strukturu baze ( ) :
Prvo podesi da datum učlanjenja može da bude i null. I nemoj ni da predaješ taj argument, samo ga izostavi. Pa vidi jel hoće da tako da se upiše.

[Ovu poruku je menjao toxi_programer dana 19.03.2008. u 00:27 GMT+1]
 
Odgovor na temu

mizob

Član broj: 13465
Poruke: 1108
*.rcub.bg.ac.yu.



+5 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 23:24 - pre 195 meseci
Probao sam vec tako, nece :(

Kako ne mozes da izmenis? :)

Probao na : DataConnections --> AddConnection


 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-a-1.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 23:34 - pre 195 meseci
Da, evo izmenio sam.
I radi, kada izostavim datum, znači nisi lepo konvertovao datum. Normalno, ovo radi ako datum postaviš da može biti null

Evo šta sam ukucao:
Code:

SqlConnection konekcija1 = new SqlConnection(_connString);

SqlCommand komanda1 = new SqlCommand();
komanda1.Connection = konekcija1; //komanda gleda u konekciju1

String tekst1 = "insert into clanovi (ime,prezime,adresa,telefon,zaduzenje,jmbg) values('" + m_ime + " ' , ' " + m_prezime + " ' , ' " + m_adresa + " ',' " + m_telefon + " ', " + m_zaduzenje + " ,' " + m_jmbg + " ')";
string sqlSelect = "SELECT * FROM clanovi";
komanda1.CommandText = tekst1;
komanda1.CommandType = System.Data.CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter(komanda1);
System.Data.DataTable table = new System.Data.DataTable();
konekcija1.Open();
komanda1.ExecuteNonQuery();
komanda1.CommandText = sqlSelect;
adapter.Fill(table);
System.Windows.Forms.MessageBox.Show("Ukupno: " + table.Rows.Count.ToString());
konekcija1.Close(); 

return (tekst1);



 
Odgovor na temu

mizob

Član broj: 13465
Poruke: 1108
*.rcub.bg.ac.yu.



+5 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL18.03.2008. u 23:47 - pre 195 meseci
Pa stavljen mi je bio date da moze biti null, nije htelo, kad sam stavio tvoj kod, nece ni tada...
Nemam pojma sada...pokusacu sutra reinstall ili na drugom racunaru da pokrenem kod..

Mada, MessageBox mi izbaci: Ukupno: 1

Videcu sutra sta ce biti pa javljam...
 
Odgovor na temu

mizob

Član broj: 13465
Poruke: 1108
*.rcub.bg.ac.yu.



+5 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL19.03.2008. u 15:03 - pre 195 meseci
Probao na drugom racunaru, nece..
Sve(osim br_clana koji je primary key) sam stavio da mzoe da bude null, upisem neke podatke(nisam datum upisivao), i nece da mi se sacuvaju...
Si siguran da tvoj kod tako ide? Mozes li jos jednom da proveris?
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-a-1.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL19.03.2008. u 15:19 - pre 195 meseci
Juče sam probao. Kod koji sam iznad napisao prekopiraj da bude unutar tvoj fajla Clan.cs, u funkciju UpisiClanaUBazu().
Zatim pokreni program i klikni tamo da upišeš novog člana, unesi neke podatke i pritisni deset puta ono dugme. Biće prikazano da je deset redova dodato...
 
Odgovor na temu

mizob

Član broj: 13465
Poruke: 1108
*.rcub.bg.ac.yu.



+5 Profil

icon Re: Razni problemi koje ne znam da resim - C# & SQL19.03.2008. u 15:27 - pre 195 meseci
Da, probato, kliknem 10x na dugme, pise dodato 10 redova, zatvorim aplikaciju, pogledam tabelu, tabela prezna....

Upravo sam probao i da ne stavljam kod u metodu klase clan, vec da direktno pozovem taj kod iz dugmeta, i opet nece.
Probao sam i http://www.elitesecurity.org/p1892461 , i nece ni to...


 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Razni problemi koje ne znam da resim - C# & SQL

[ Pregleda: 2447 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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