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

c# problem kod querija

[es] :: .NET :: c# problem kod querija

[ Pregleda: 3520 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon c# problem kod querija03.10.2014. u 15:49 - pre 71 meseci
izbaci mi ovu gresku


ali 4 unosa je (2 combo boxa i 2 data pickera) za 4 kolone u tabeli.

U cemu je problem?
Evo celog koda

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

namespace zadatak2
{
    public partial class Form1 : Form
    {
        private OleDbConnection connection=new OleDbConnection();
        public Form1()
        {
            connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\VS2010 projects\zadatak2\zadatak2\fedek.accdb;Jet OLEDB:Database Password=fedek;";
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {

                connection.Open();
                OleDbCommand command=new OleDbCommand();
                command.Connection=connection;
                string query="select * from konf";
                command.CommandText=query;
                
                OleDbDataReader reader=command.ExecuteReader();
                while(reader.Read())
                {
                    comboBox1.Items.Add(reader["korisnik"].ToString());
                    comboBox2.Items.Add(reader["dogadjaj"].ToString());
            }
               
            }
            catch(Exception ex)
            {
                MessageBox.Show("error" + ex);
            }

            connection.Close();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "''" + this.dtpOd.Text + "''" + this.dtpDo.Text + "') ;";

           
          

            OleDbCommand command1 = new OleDbCommand();
            command1.Connection = connection;
            command1.CommandText = query;

            OleDbDataReader reader;


            try
            {
                connection.Open();

                reader = command1.ExecuteReader();
                MessageBox.Show("saved");
                while (reader.Read())
                {
                }

            }

            catch (Exception ex1)
            {
                MessageBox.Show("error" + ex1);
            }

            connection.Close();
        }

       

       

       
    }
}

life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1327
*.dynamic.sbb.rs.



+308 Profil

icon Re: c# problem kod querija03.10.2014. u 16:10 - pre 71 meseci
Fale ti zarezi ovde izmedju ' '
Code:
this.comboBox2.SelectedItem + "''" + this.dtpOd.Text + "''" + this.dtpDo.Text + "') ;";
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija03.10.2014. u 16:12 - pre 71 meseci
hah, hvala, nisam video..

sad mi izbaci kao data missmatch of types, ali u bazi mi se cini sve ok
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1327
*.dynamic.sbb.rs.



+308 Profil

icon Re: c# problem kod querija03.10.2014. u 16:19 - pre 71 meseci
Umesto
Code:

this.dtpOd.Text


Treba
Code:

this.dtpOd.Value.ToString("format koji razume access")

i verovatno ne bi trebalo da stoji u navodnicima ' '

Nauči da koristiš debugger, nema smisla da pitaš za svaku banalnu grešku dok ti ne proradi.
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija03.10.2014. u 16:24 - pre 71 meseci
on razume date/time, znaci trebalo bi this.dtpOd.Value.ToString("Date/Time"), ali tako ne radi...

dzabe debuger, on mi kaze gde je greska, al kad ne znam da je ispravim u potpunosti
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija03.10.2014. u 16:34 - pre 71 meseci
resio,

Code:


string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";

life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 230
*.adsl.net.t-com.hr.

ICQ: 132872590


+3 Profil

icon Re: c# problem kod querija03.10.2014. u 20:30 - pre 71 meseci
Vidim da ti nitko nije skrenuo pažnju pa ću ja, query-ji na bazu se ovako ne pišu. Savjetujem ti da što prije proučiš kako parametrizirati query-je. Nije teško, a riješiti će ti probleme koje imaš s tipovima, plus što će te zaštititi od SQL injectiona.
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija03.10.2014. u 20:33 - pre 71 meseci
ja znam ovako, tj tako sam sa neta skontao
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 230
*.adsl.net.t-com.hr.

ICQ: 132872590


+3 Profil

icon Re: c# problem kod querija03.10.2014. u 20:59 - pre 71 meseci
Ako prikačiš bazu mogu ti složiti primjer kako bi se to otprilike trebalo raditi.

Edit:
Evo pošto nisam imao tvoju bazu pokušao sam ju rekonstruirati iz tvog posta. Uz poruku je prikačen solution koji bi ti trebao raditi s tvojom bazom ako sam sve dobro uradio. Uglavnom tu ti je cijeli solution pa možeš pogledati kako se parametriziraju query-ji, jer stvarno je bitno otpočetka učiti raditi s bazom na ispravan način.
Naravno, ovdje je sve nabacano na jednu formu, to se tako ne radi, ali o tom potom.

[Ovu poruku je menjao --ja-- dana 03.10.2014. u 23:16 GMT+1]
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Prikačeni fajlovi
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija04.10.2014. u 10:38 - pre 71 meseci
pa evo stavicu ja bazu, nije problem.
Code:
http://speedy.sh/mVqGn/fedek.accdb


ne mogu da otvorim jer je u novijoj verziji napravljeno, ja imam vs2010

life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 230
*.racunarstvo.hr.

ICQ: 132872590


+3 Profil

icon Re: c# problem kod querija04.10.2014. u 11:31 - pre 71 meseci
Izvoliš,

prekucano u VS2010 i ažurirano da radi s tvojom bazom.

Samo naprijed!
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Prikačeni fajlovi
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija04.10.2014. u 14:00 - pre 71 meseci
bas i ne kontam sta je tu uradjeno, ne vidim query nigde

life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 230
*.racunarstvo.hr.

ICQ: 132872590


+3 Profil

icon Re: c# problem kod querija04.10.2014. u 14:08 - pre 71 meseci
Expandaj region:

http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Prikačeni fajlovi
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija04.10.2014. u 14:22 - pre 71 meseci
ovo je malo duzi posao od onog sto sam ja uradio :) ali vidim da je lakse i bolje i sigurnije...

Ali sta recimo ako bih zeleo da random unesem u bazu podataka sa dugmetom, znaci imam data picker i da tako izaberem datum i kada kliknem na random on sam izabere iz combo boxova i unese u tabelu tomislav..
Code:

private void button1_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            int newSelectedIndex = comboBox1.SelectedIndex;
            while (newSelectedIndex == comboBox1.SelectedIndex)
            {
                newSelectedIndex = random.Next(0, comboBox1.Items.Count);
            }
            comboBox1.SelectedIndex = newSelectedIndex;
        }

tako sam nekako mislio da izabere na dugme random iz jednog comboa...Ali kako sad oba i jos da impelentiram u bazu podataka...

life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 230
*.racunarstvo.hr.

ICQ: 132872590


+3 Profil

icon Re: c# problem kod querija04.10.2014. u 15:57 - pre 71 meseci
Ako kucaš po onom mom kodu, onda ovako:

Code:

        private void button1_Click(object sender, EventArgs e)
        {
            Random r = new Random((int)DateTime.Now.Ticks);

            cbKorisnici.SelectedIndex = r.Next(0, cbKorisnici.Items.Count);
            cbDogadjaji.SelectedIndex = r.Next(0, cbDogadjaji.Items.Count);

            Save();
        }


Inicijalizaciju random number generatora bi trebalo baciti u konstruktor forme ali i ovako ćeš dobiti to što ti hoćeš.
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija04.10.2014. u 16:21 - pre 71 meseci
A moze li se napraviti da recimo napravim neki textBox i da unesem broj, npr, 3 i da 3 random unosa on ubaci sam u bazu podataka? ako ja recimo odaberem dva datuma(od-do, sa date pickera) a sam da random izabere neki datum/vreme odatle, dogadjaj i korisnika?


ja sam stavio format ovako
Code:

dtpOd.Format = DateTimePickerFormat.Custom;
dtpOd.CustomFormat = "ddddd, MMMM dd, yyyy hh:mm:ss tt"; 





Ali ne vidim u tvom kodu gde je deo koji upisuje i vreme u bazu? jer ja sam stavio format da pokazuje i vreme u datapicker, ali u mom kodu stavlja u bazu samo datum, a ne vreme.

Code:

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

namespace zadatak2
{
    public partial class Form1 : Form
    {
        private OleDbConnection connection=new OleDbConnection();
        public Form1()
        {
            connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\VS2010 projects\zadatak2\zadatak2\fedek.accdb;Jet OLEDB:Database Password=fedek;";
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dtpOd.Format = DateTimePickerFormat.Custom;
            dtpOd.CustomFormat = "ddddd, MMMM dd, yyyy hh:mm:ss tt";
            dtpDo.Format = DateTimePickerFormat.Custom;
            dtpDo.CustomFormat = "ddddd, MMMM dd, yyyy hh:mm:ss tt"; 

                connection.Open();
                
                string query="SELECT korisnik from korisnici";
                string query2 = "select dogadjaj from dogadjaji";
                OleDbCommand command = new OleDbCommand(query, connection);
                command.Connection = connection;
                OleDbDataReader reader = command.ExecuteReader();

               
                
             
                while(reader.Read())
                {

                    comboBox1.Items.Add(reader["korisnik"].ToString());
                   
                    
            }
                command = new OleDbCommand(query2, connection);
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    comboBox2.Items.Add(reader["dogadjaj"].ToString());
                }
           
           

            connection.Close();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
          
            string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";
           
          

            OleDbCommand command1 = new OleDbCommand();
            command1.Connection = connection;
            command1.CommandText = query;

            OleDbDataReader reader;


            try
            {
                connection.Open();

                reader = command1.ExecuteReader();
                MessageBox.Show("Saved");
                while (reader.Read())
                {
                }

            }

            catch (Exception ex1)
            {
                MessageBox.Show("error" + ex1);
            }

            connection.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            new Random((int)DateTime.Now.Ticks);  
                int staro1 = comboBox1.SelectedIndex;
                int staro2 = comboBox2.SelectedIndex;
     
                comboBox1.SelectedIndex = (new Random()).Next(comboBox1.Items.Count);
                comboBox2.SelectedIndex = (new Random()).Next(comboBox2.Items.Count);
     
                string tekstKomande = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";
     
     
                OleDbCommand command1 = new OleDbCommand();
                command1.Connection = connection;
                command1.CommandText = tekstKomande;

                OleDbDataReader reader;


                try
                {
                    connection.Open();

                    reader = command1.ExecuteReader();
                    MessageBox.Show("saved");
                    while (reader.Read())
                    {
                    }

                }

                catch (Exception ex1)
                {
                    MessageBox.Show("error" + ex1);
                }

                connection.Close();
     
                comboBox1.SelectedIndex = staro1;
                comboBox2.SelectedIndex = staro2;
            }
        }

  

       

       

       
    }




[Ovu poruku je menjao tomislav91 dana 04.10.2014. u 20:00 GMT+1]
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 230
*.adsl.net.t-com.hr.

ICQ: 132872590


+3 Profil

icon Re: c# problem kod querija04.10.2014. u 19:18 - pre 71 meseci
Naravno da može.
Code:

if (dtDatumOd.Value.Ticks < dtDatumDo.Value.Ticks)
{
    byte[] buffer = new byte[sizeof(long)];

    _random.NextBytes(buffer);
    long value1 = (Math.Abs(BitConverter.ToInt64(buffer, 0)) % (dtDatumDo.Value.Ticks - dtDatumOd.Value.Ticks)) + dtDatumOd.Value.Ticks;

    _random.NextBytes(buffer);
    long value2 = (Math.Abs(BitConverter.ToInt64(buffer, 0)) % (dtDatumDo.Value.Ticks - dtDatumOd.Value.Ticks)) + dtDatumOd.Value.Ticks;

    DateTime datumOd = new DateTime(Math.Min(value1, value2));
    DateTime datumDo = new DateTime(Math.Max(value1, value2));
}


Mislim da bi ti bilo bolje pronaći nekakve zadatke za početnike nego ovako napamet nabadati. Ili si zadaj neki jednostavniji zadatak u okviru onoga što znaš pa se igraj s time dok se u tome ne uhodaš. Forum služi za pitanja i sve je to ok, odgovarao sam isključivo jer sam vidio da se trudiš i pokušavaš sam nešto shvatiti, i to podržavam. Samo smatram da si krenuo od prekompliciranih stvari (pristup bazi gdje napraviš select koji vrati kartezijev produkt dviju tablica pa se čudiš zašto se vrijednosti duplaju, randomiziranje nekih datuma i slično). Probaj jednostavnije stvari, za početak nakucaj neki tekst editor ili kalkulator, to su nam valjda svima bili neki početnički primjeri, i ima hrpa tutorijala za to. Nemoj odjednom sve učiti (i c# i baze i tko zna što još), prvo radi c#, kad stekneš dojam da si njime ovladao do razine kad sam možeš riješiti ili na netu pronaći rješenje za većinu problema koje srećeš, onda tu počni učiti još nešto, npr. bazu.

Eto nadam se da sam pomogao.
Pozdrav!

Edit:
Dok sam napisao odgovor izmijenio si pitanje. Nek ostane ovo ovdje, a ostatak pokušaj sam dokučiti :)
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija04.10.2014. u 19:32 - pre 71 meseci
Hvala na odgovoru!

Da li ovaj kod stavljam u moje dugme? Ne znam sad da je to odgovor na? random vreme?
Ima neke greskice, ja sam to stavio u deo koda:
Code:

 private void button1_Click(object sender, EventArgs e)
        {
            int intTextBox;
            intTextBox = Convert.ToInt32(txtBroj.Text);
            intTextBox = int.Parse(txtBroj.Text);
            for (int i = 0; i < intTextBox + 1; i++)
            {
                int staro1 = comboBox1.SelectedIndex;
                int staro2 = comboBox2.SelectedIndex;

                comboBox1.SelectedIndex = (new Random()).Next(comboBox1.Items.Count);
                comboBox2.SelectedIndex = (new Random()).Next(comboBox2.Items.Count);
                if (dtpOd.Value.Ticks < dtpDo.Value.Ticks)
                {
                    byte[] buffer = new byte[sizeof(long)];

                    random.NextBytes(buffer);
                    long value1 = (Math.Abs(BitConverter.ToInt64(buffer, 0)) % (dtpDo.Value.Ticks - dtpOd.Value.Ticks)) + dtpOd.Value.Ticks;

                   random.NextBytes(buffer);
                    long value2 = (Math.Abs(BitConverter.ToInt64(buffer, 0)) % (dtpDo.Value.Ticks - dtpOd.Value.Ticks)) + dtpOd.Value.Ticks;

                    DateTime datumOd = new DateTime(Math.Min(value1, value2));
                    DateTime datumDo = new DateTime(Math.Max(value1, value2));
                }

                string tekstKomande = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value + "','" + this.dtpDo.Value + "') ;";

.
.
....

I ima neke greskice, da ime random ne postoji u tom kontekstu...


life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 308
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: c# problem kod querija04.10.2014. u 20:52 - pre 71 meseci
iako sam stavio u tom delu koda
Random random = new Random();
on ne uradi posao, kada stavim text box i stavim da upisuje toliko puta koliko ja unesem u text box on unese samo te datume i vreme koje sam stavio, a ne random, a hteo bih da kad odaberem raspon datuma da mi u bazi ubaci random datum i vreme
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

ssi

Član broj: 305920
Poruke: 275
*.static.sbb.rs.



+343 Profil

icon Re: c# problem kod querija10.10.2014. u 12:38 - pre 71 meseci
Citat:
tomislav91:
resio,

Code:


string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";



Vidi, nemoj to da radis.

1) SQL injection je ozbiljan propust

2) Ruzno izgleda

3) Sta ce se desiti kada imas recimo:

Korisnik, Dogadjaj, DatumOd, DatumDo, Potpisao, PotpisaoDatum, Odobrio, OdobrioDatum, Proneverio, ProneverioDatum, Prgledao, PregledaoDatum itd... ?

Ko ce to debug-ovati ako se pojavi greska, promene ime polja ili nesto slicno ? I cime ? I koliko ce zivaca potrositi na to ?

Sta ako to budes bas ti :) posle dve godine :)

4) Top 25 Most Dangerous Programming Mistakes
 
Odgovor na temu

[es] :: .NET :: c# problem kod querija

[ Pregleda: 3520 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

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