Radomi Mihajlovic
Zainteresovan član
- Poruka
- 104
Zelim da koristim vise indexa nad jewdnom tabelom a ne primary key. Znam punoi toga o indexima i B-stablu kao i primarnom i sekundarnim kljucevima kao i o normalizacioji baze. Koristim MySql i dosta sam procitao i MySql-u i trazio po netu primer gde se upotrebljava SELET, INSERT, UPDATE nad tabelom koja ima 5 indexa. Tabela je radgk (radna baza za glavnu knjigu za one koji se razumeju u knjigovodstvo) indexi si godgk CHAR (4) (godina recimo "2018"), brnalogafp CHAR (4) ( broj naloga "60"), kontogk CHAR (8) (konto "2020"), stavkagk CHAR (20)(opis atavke "racun-123"), sifmtgk CHAR(10)(sifra mesta troska "1000"). Index je u ovom redosledu. Kada pokusam sledece dobijam poruku o neupisivanje podataka u tabelu. Evo dela programa
string wnadimt = "SELECT godgk, kontogk, brnalgk, dugujegk, potrazgk, stavkagk, sifmtgk " +
"FROM radgk WHERE godgk=@godgk + kontogk=@kontogk +
brnalgk=@brnalgk + stavkagk=@stavkagk + sifmtgk=@sifmtgk";
MySqlCommand cmdag = new MySqlCommand(wnadimt, conmt);
cmdag.Parameters.AddWithValue("@godgk", qgodina);
cmdag.Parameters.AddWithValue("@kontogk", wkontogk);
cmdag.Parameters.AddWithValue("@brnalgk", qbrnalf);
cmdag.Parameters.AddWithValue("@stavkagk", wstavkarp);
cmdag.Parameters.AddWithValue("@sifmtgk", wsifmtgk);
System.Data.Common.DbDataReader reader = await cmdag.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
string pduguje = reader["dugujegk"].ToString().Trim();
string ppotraz = reader["potrazgk"].ToString().Trim();
if (pduguje != "")
{
wimadugujegk = 1;
zbirdug = System.Convert.ToDecimal(pduguje);
zbirpot = 0;
}
if (ppotraz != "")
{
wimapotrazgk = 1;
zbirpot = System.Convert.ToDecimal(ppotraz);
zbirdug = 0;
}
}
reader.Close();
}
conmt.Close();
evo i primera sa INSERET
MySqlConnection cona;
myConnectionString = pwput;
cona = new MySql.Data.MySqlClient.MySqlConnection();
cona.ConnectionString = myConnectionString;
try
{
cona.OpenAsync();
if (cona.State == ConnectionState.Open)
{
int qkontogk = Convert.ToInt32(wkontogk);
//int qbrnalgk = Convert.ToInt32(wbrnalogafp);
string upisi = "INSERT INTO radgk (godgk, kontogk, brnalgk, datnalgk, stavkagk, vrdokgk, datracgk, rokplgk, dugujegk, potrazgk, dpogk, sifmtgk, vezadokgk )" +
" VALUES (@godgk, @kontogk, @brnalgk, @datnalgk, @stavkagk, @vrdokgk, @datracgk, @rokplgk, @dugujegk, @potrazgk, @dpogk, @sifmtgk, @vezadokgk )";
tran = cona.BeginTransaction();
MySqlCommand cmda = new MySqlCommand(upisi, cona);
cmda.Transaction = tran;
cmda.Parameters.AddWithValue("@godgk", wgodina);
cmda.Parameters.AddWithValue("@kontogk", qkontogk);
cmda.Parameters.AddWithValue("@brnalgk", wbrnalogafp);
cmda.Parameters.AddWithValue("@datnalgk", wdatumnaloga);
cmda.Parameters.AddWithValue("@stavkagk", wstavkarp);
cmda.Parameters.AddWithValue("@vrdokgk", wsifdok);
cmda.Parameters.AddWithValue("@datracgk", wdatumdok);
cmda.Parameters.AddWithValue("@rokplgk", wrokplrp);
cmda.Parameters.AddWithValue("@sifmtgk", wsifmtgk);
cmda.Parameters.AddWithValue("@dpogk", wdporp);
cmda.Parameters.AddWithValue("@vezadokgk", wvezadokrp);
if ((dduguje != 0) & (wbiodug == 0))
{
cmda.Parameters.AddWithValue("@dugujegk", dduguje);
cmda.ExecuteNonQuery();
tran.Commit();
cona.Close();
//wpotraz = "0";
return;
}
if ((dpotraz != 0) & (wbiopot == 0))
{
cmda.Parameters.AddWithValue("@potrazgk", dpotraz);
cmda.ExecuteNonQuery();
tran.Commit();
cona.Close();
//wduguje = "0";
return;
}
}
else
{
MessageBox.Show(" NISTE USPELI DA SE KONEKTUJETE NA SERVER\r\n ZATVORITE PROGRAM PA POKUSAJTE PONOVO \r\n");
}
}
catch (MySqlException ex)
{
try
{
tran.Rollback();
MessageBox.Show(" DOŠLO JE DO GREŠKE PRI UPISU PODATAKA U GLAVNU KNJIGU\r\nKAKO OVI PODACI NISU UPISANI PROVERITE PA PONOVITE UPIS !! ");
}
catch (MySqlException ex1)
{
MessageBox.Show(" DOŠLO JE DO GREŠKE PRI UPISU PODATAKA U BAZU\r\nKAKO OVI PODACI NISU UPISANI, PONOVITE UPIS !! ");
}
finally
{
if (cona.State == ConnectionState.Open)
{
cona.Close();
}
}
switch (ex.Number)
{
case 0:
MessageBox.Show(" NISTE USPELI DA SE KONEKTUJETE NA SERVER, ZATVORITE PROGRAM PA POKUSAJTE PONOVO");
Close();
break;
case 1042:
MessageBox.Show(" NIJE AKTIVAN SERVER, PODIGNITE SERVER PA PONOVITE KONEKTOVANJE ");
Close();
break;
}
}
Hvala na vremenu
string wnadimt = "SELECT godgk, kontogk, brnalgk, dugujegk, potrazgk, stavkagk, sifmtgk " +
"FROM radgk WHERE godgk=@godgk + kontogk=@kontogk +
brnalgk=@brnalgk + stavkagk=@stavkagk + sifmtgk=@sifmtgk";
MySqlCommand cmdag = new MySqlCommand(wnadimt, conmt);
cmdag.Parameters.AddWithValue("@godgk", qgodina);
cmdag.Parameters.AddWithValue("@kontogk", wkontogk);
cmdag.Parameters.AddWithValue("@brnalgk", qbrnalf);
cmdag.Parameters.AddWithValue("@stavkagk", wstavkarp);
cmdag.Parameters.AddWithValue("@sifmtgk", wsifmtgk);
System.Data.Common.DbDataReader reader = await cmdag.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
string pduguje = reader["dugujegk"].ToString().Trim();
string ppotraz = reader["potrazgk"].ToString().Trim();
if (pduguje != "")
{
wimadugujegk = 1;
zbirdug = System.Convert.ToDecimal(pduguje);
zbirpot = 0;
}
if (ppotraz != "")
{
wimapotrazgk = 1;
zbirpot = System.Convert.ToDecimal(ppotraz);
zbirdug = 0;
}
}
reader.Close();
}
conmt.Close();
evo i primera sa INSERET
MySqlConnection cona;
myConnectionString = pwput;
cona = new MySql.Data.MySqlClient.MySqlConnection();
cona.ConnectionString = myConnectionString;
try
{
cona.OpenAsync();
if (cona.State == ConnectionState.Open)
{
int qkontogk = Convert.ToInt32(wkontogk);
//int qbrnalgk = Convert.ToInt32(wbrnalogafp);
string upisi = "INSERT INTO radgk (godgk, kontogk, brnalgk, datnalgk, stavkagk, vrdokgk, datracgk, rokplgk, dugujegk, potrazgk, dpogk, sifmtgk, vezadokgk )" +
" VALUES (@godgk, @kontogk, @brnalgk, @datnalgk, @stavkagk, @vrdokgk, @datracgk, @rokplgk, @dugujegk, @potrazgk, @dpogk, @sifmtgk, @vezadokgk )";
tran = cona.BeginTransaction();
MySqlCommand cmda = new MySqlCommand(upisi, cona);
cmda.Transaction = tran;
cmda.Parameters.AddWithValue("@godgk", wgodina);
cmda.Parameters.AddWithValue("@kontogk", qkontogk);
cmda.Parameters.AddWithValue("@brnalgk", wbrnalogafp);
cmda.Parameters.AddWithValue("@datnalgk", wdatumnaloga);
cmda.Parameters.AddWithValue("@stavkagk", wstavkarp);
cmda.Parameters.AddWithValue("@vrdokgk", wsifdok);
cmda.Parameters.AddWithValue("@datracgk", wdatumdok);
cmda.Parameters.AddWithValue("@rokplgk", wrokplrp);
cmda.Parameters.AddWithValue("@sifmtgk", wsifmtgk);
cmda.Parameters.AddWithValue("@dpogk", wdporp);
cmda.Parameters.AddWithValue("@vezadokgk", wvezadokrp);
if ((dduguje != 0) & (wbiodug == 0))
{
cmda.Parameters.AddWithValue("@dugujegk", dduguje);
cmda.ExecuteNonQuery();
tran.Commit();
cona.Close();
//wpotraz = "0";
return;
}
if ((dpotraz != 0) & (wbiopot == 0))
{
cmda.Parameters.AddWithValue("@potrazgk", dpotraz);
cmda.ExecuteNonQuery();
tran.Commit();
cona.Close();
//wduguje = "0";
return;
}
}
else
{
MessageBox.Show(" NISTE USPELI DA SE KONEKTUJETE NA SERVER\r\n ZATVORITE PROGRAM PA POKUSAJTE PONOVO \r\n");
}
}
catch (MySqlException ex)
{
try
{
tran.Rollback();
MessageBox.Show(" DOŠLO JE DO GREŠKE PRI UPISU PODATAKA U GLAVNU KNJIGU\r\nKAKO OVI PODACI NISU UPISANI PROVERITE PA PONOVITE UPIS !! ");
}
catch (MySqlException ex1)
{
MessageBox.Show(" DOŠLO JE DO GREŠKE PRI UPISU PODATAKA U BAZU\r\nKAKO OVI PODACI NISU UPISANI, PONOVITE UPIS !! ");
}
finally
{
if (cona.State == ConnectionState.Open)
{
cona.Close();
}
}
switch (ex.Number)
{
case 0:
MessageBox.Show(" NISTE USPELI DA SE KONEKTUJETE NA SERVER, ZATVORITE PROGRAM PA POKUSAJTE PONOVO");
Close();
break;
case 1042:
MessageBox.Show(" NIJE AKTIVAN SERVER, PODIGNITE SERVER PA PONOVITE KONEKTOVANJE ");
Close();
break;
}
}
Hvala na vremenu