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

Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!

[es] :: .NET :: .NET Desktop razvoj :: Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!

[ Pregleda: 3324 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tufahija
Beograd

Član broj: 125129
Poruke: 2
*.vdial.verat.net.



Profil

icon Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!18.12.2006. u 16:28 - pre 213 meseci
Ljudi dao mi drug zadatak,radili na fakultetu,nije znao da ga uradi!I ja probah ali imam problema!

Zadatak je sledeci:
data je baza Student i u njoj tabela Student i Ocena.Poterbno je da se u jednoj transakciji u bazu ubace student(ciji se podaci inace unose u Textbox) i sve njegove ocene(koje se inace unose u DataGrid).
Ovo da ubacim studenta kontam,ali ovaj deo sa ocenama ne radi.Tj ne znam kako treba da izgleda foreach petlja a ne mogu da skontam ni kako treba da mi izgleda INSERT naredba za ubacivanje ocena koje unesem u DataGrid!Evo kod,pa ako neko moze da ispravi bas bi mi znacilo,posto se celi dan mucim(mozda je glup al sta da radim..)!

Hvala!

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.Data.OleDb;

namespace StudentOcena
{
    public partial class StudOcena : Form

    {
        OleDbConnection konekcija;
        OleDbTransaction transakcija;
        DataTable dt;
        public StudOcena()
        {
            InitializeComponent();
            string konekcioniString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\SiK\Desktop\Student.mdb;Persist Security Info=False";
            konekcija = new OleDbConnection(konekcioniString);
            dt = new DataTable();
            dt.Columns.Add("PredmetID");
            dt.Columns.Add("Profesor");
        dt.Columns.Add("Ocena");
            dataGridView1.DataSource = dt;

        }
        private void btnSacuvaj_Click(object sender, EventArgs e)
                    {
            string ubaciStud = "INSERT INTO Student VALUES('" + txtStudentID.Text+ "','"+txtIme.Text+"','"+txtPrezime.Text+"','"+BrInd.Text+"')";

            string ubaciOcenu = "INSERT INTO Ocena VALUES('" + txtStudentID.Text +"','" +dt.Columns["PredmetID"].ToString() + "','" + dt.Columns["Profesor"].ToString() + "','" + dt.Columns["Ocena"].ToString() + "')"; 
            transakcija = null;
          
            try
            {
                konekcija.Open();
                transakcija = konekcija.BeginTransaction();
                OleDbCommand komanda = new OleDbCommand(ubaciStud, konekcija, transakcija);
                komanda.ExecuteNonQuery();
                foreach (DataRow red in //…)// ili je mozda problem ovdje u petlji???
                {                   
                    transakcija=konekcija.BeginTransaction();
                    komanda = new OleDbCommand(ubaciOenu, konekcija, transakcija);
                    komanda.ExecuteNonQuery();
                  
                }

                transakcija.Commit();
            }
            catch (Exception)
            {
                transakcija.Rollback();
            }
            finally
            {
                konekcija.Close();
            }
        }      
    }
}
 
Odgovor na temu

colke77
Dragan Colić
Beograd

Član broj: 74309
Poruke: 195
195.252.107.*



+12 Profil

icon Re: Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!19.12.2006. u 08:21 - pre 213 meseci
Ako tabela Student ima 4 polja (StudentID, Ime, Prezime, BrIndeksa) SQL iskaz INSERT za tabelu student je OK, ako ima vise polja onda treba da izgleda ovako:

"INSERT INTO Student (StudentID, Ime, Prezime, BrIndeksa) VALUES ('" + txtStudentID.Text+ "','" + txtIme.Text + "','"+txtPrezime.Text + "','"+BrInd.Text+"')

Isto vazi i za tabelu Ocene

Ja bi Kod napisao ovako. Ustvari ovo je moj template koji 100% radi, prilagodjen tvom problemu
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.Data.OleDb;

namespace StudentOcena
{
    public partial class StudOcena : Form

    {
        OleDbConnection konekcija = null;
        OleDbTransaction transakcija = null;
        OleDbCommand komanda = null;

        DataTable dt;

        public StudOcena()
        {
            InitializeComponent();
            string konekcioniString = @"ovde ide tvoj ConnectionString";
            konekcija = new OleDbConnection(konekcioniString);

            try { konekcija.Open(); }
           catch (OleDbException e)
           {
              // Baza podataka nije otvorena
               MessageBox.Show(e.Message);
           } 
            // Baza podataka je otvorena
            komanda = konekcija.CreateCommand();
            Komanda.Connection = konekcija;
            komanda.Transaction = transakcija;
           
            dt = new DataTable();
            dt.Columns.Add("PredmetID");
            dt.Columns.Add("Profesor");
            dt.Columns.Add("Ocena");
            dataGridView1.DataSource = dt;
        }
        private void btnSacuvaj_Click(object sender, EventArgs e)
        {
            string ubaciStud = "INSERT INTO Student VALUES('" + txtStudentID.Text+ "','" + txtIme.Text + "','" + txtPrezime.Text + "','"+BrInd.Text+"')";
            
            komanda.CommandText = ubaciStud
            transakcija = konekcija.BeginTransaction();
            try
            {
                
                komanda.ExecuteNonQuery();
                foreach (DataRow red in dataGridView1.Rows)
                {
                   string ubaciOcenu = "INSERT INTO Ocena VALUES('" + txtStudentID.Text +"','" + red["PredmetID"].ToString() + "','" + red["Profesor"].ToString() + "','" + red["Ocena"].ToString() + "')";                    
                    komanda.CommandText = ubaciOenu;
                    komanda.ExecuteNonQuery();                  
                }                
            }
            catch (OleDBException)
            {
                transakcija.Rollback();
            }
            transakcija.Commit();
            finally
            {
                konekcija.Close();
            }
        }      
    }
}

Idemo dalje
 
Odgovor na temu

bunker
Srđan Savković
Smederevo

Član broj: 4495
Poruke: 239
212.5.210.*



Profil

icon Re: Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!19.12.2006. u 08:22 - pre 213 meseci
Ovde fali dosta koda, nadam se da nisi hteo da ga stavis, ali ako je pseuudo, mogu da ti pomognem. Ako nije pseudo kod onda ti treba tabela iz koje vadis redove kroz koje iteriras.
Greska je u ponovnom otvaranju transakcije

Code:

foreach (DataRow red in //…)// ili je mozda problem ovdje u petlji???
 {                   
     //transakcija=konekcija.BeginTransaction();
     komanda = new OleDbCommand(ubaciO[b]c[/b]enu, konekcija, transakcija);
     komanda.ExecuteNonQuery();


A kako izgleda sintaksa za foreach nadji u MSDN-u
Nije važno stići prvi. Važno je prvo da stigneš.
 
Odgovor na temu

tufahija
Beograd

Član broj: 125129
Poruke: 2
213.244.208.*



Profil

icon Re: Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!19.12.2006. u 17:37 - pre 213 meseci
ej pa da,ja bi trebalo da napravim metodu koja prima red a kroz redove da prolazim u foreach petlji!
ali ja ne znam kako da napravim tu metodu!!!
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Transakcije u Bazu Podataka C#!Ne mogu da skontam nikako!!

[ Pregleda: 3324 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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