Poslao: 03 Okt 2014 16:19
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
ovu gresku izbaci
ne razumem zasto kada ima 4 querija i 4 destination(2 combo-a i 2 date pickera)
[code]
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();
}
}
}
[/code]
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 03 Okt 2014 17:12
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Koliko vidim, imaš grešku u upitu, baš kao što kaže poruka:
string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "''" + this.dtpOd.Text + "''" + this.dtpDo.Text + "') ;" Obrati pažnju na to da nemaš zapete između para atributa 2-3 i 3-4.
|
|
|
|
Poslao: 03 Okt 2014 17:16
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
a to sam ispravio ali mi izbaci kao data missmatch of types, ali u bazi mi se cini sve ok
|
|
|
|
Poslao: 03 Okt 2014 17:24
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Tu je verovatno do datuma problem. Moraš da proveriš kog je formata datum u propertiju Text za DTP, i da li se format poklapa sa onim koji zahteva Access. Ako ti nije bitno da datum bude zabeležen kao datum (ne koristiš samo delove datuma u upitima) najjednostavnije je da u bazi tipove atributa DatumOd i DatumDo postaviš na Text. Pa čak i u tom slučaju možeš da izvučeš delove datuma ukoliko zatreba.
|
|
|
|
Poslao: 03 Okt 2014 17:40
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";
Ovako sam resio.
|
|
|
|
Poslao: 04 Okt 2014 13:35
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Sklapanje queryja tako što samo u stringu spojiš sve promenljive nije dobra praksa. Zamisli da neki korisnik sebi da ime: Korisnik) values (''); drop table Tomislav;
Kad budeš pokrenuo query, upisaće se jedan prazan red, a zatim ode tabela.
Da bi izbegao ovo (sql injection) koristi parametre. Svaka sql baza podržava parametre u queryjima, i u velikom broju slučajeva će ponovno poretanje tog queryja sa drugačijim parametrima biti brže nego da sam sklopiš nov query.
|
|
|
|
|
Poslao: 04 Okt 2014 15:34
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 04 Okt 2014 15:33
Pa upoznaj ih. Veoma je bitno to. Evo jednog kratkog primera iz kog možeš da vidiš kako to radi:
Dopuna: 04 Okt 2014 15:34
Istina, ovde se radi sa Oracle DBMS-om, ali to i nije toliko bitno.
|
|
|
|