Post by Ralu on May 1, 2004 3:54:09 GMT -5
hello!
i have next code in c# (my database in on an oracle server and i use stored procedures)
OleDbTransaction tr=con1.BeginTransaction();
cmdi.CommandText="insdoct";
try
{
cmdi.Parameters.Add(new new System.Data.OleDb.OleDbParameter("iddoctor",System.Data.OleDb.OleDbType.VarWChar,5));
cmdi.Parameters[0].Value=tid.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("nume",System.Data.OleDb.OleDbType.VarWChar,15));
cmdi.Parameters[1].Value=tnume.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("prenume",System.Data.OleDb.OleDbType.VarWChar,20));
cmdi.Parameters[2].Value=tpren.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("username",System.Data.OleDb.OleDbType.VarWChar,6));
cmdi.Parameters[3].Value=tnume.Text.Substring(0,1)+tpren.Text.Substring(0,1)+tid.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("parola",System.Data.OleDb.OleDbType.VarWChar,10));
cmdi.Parameters[4].Value=tpass.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("specializare",System.Data.OleDb.OleDbType.VarWChar,25));
cmdi.Parameters[5].Value=tspec.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("grad",System.Data.OleDb.OleDbType.VarWChar,10)); cmdi.Parameters[6].Value=tgrad.Text;
cmdi.ExecuteNonQuery(); tr.Commit(); MessageBox.Show("Adaugare efectuata cu succes!!","InFoMed",MessageBoxButtons.OK,MessageBoxIcon.Information);
catch(Exception exc)
{
MessageBox.Show("Mai exista un doctor cu id-ul "+tid.Text+"!!"+exc.Message,"InFoMed",MessageBoxButtons.OK,MessageBoxIcon.Error);
tr.Rollback();
cmdi.Transaction.Rollback();
//MessageBox.Show("rollback"); MessageBox.Show(exc.StackTrace);
MessageBox.Show(exc.Message);
}
and i got exception if i use only tr i don't use cmdi.transaction.etc i get the transaction is not longer available in catch block and the record is inserted and if i use only cmdi.transaction.etc i got + exc {"Object reference not set to an instance of an object." } whaT CAN I DO?
HOW I WORK WITH TRANS IN c#? PLS PLS NEED HELP
i have next code in c# (my database in on an oracle server and i use stored procedures)
OleDbTransaction tr=con1.BeginTransaction();
cmdi.CommandText="insdoct";
try
{
cmdi.Parameters.Add(new new System.Data.OleDb.OleDbParameter("iddoctor",System.Data.OleDb.OleDbType.VarWChar,5));
cmdi.Parameters[0].Value=tid.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("nume",System.Data.OleDb.OleDbType.VarWChar,15));
cmdi.Parameters[1].Value=tnume.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("prenume",System.Data.OleDb.OleDbType.VarWChar,20));
cmdi.Parameters[2].Value=tpren.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("username",System.Data.OleDb.OleDbType.VarWChar,6));
cmdi.Parameters[3].Value=tnume.Text.Substring(0,1)+tpren.Text.Substring(0,1)+tid.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("parola",System.Data.OleDb.OleDbType.VarWChar,10));
cmdi.Parameters[4].Value=tpass.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("specializare",System.Data.OleDb.OleDbType.VarWChar,25));
cmdi.Parameters[5].Value=tspec.Text;
cmdi.Parameters.Add(new System.Data.OleDb.OleDbParameter("grad",System.Data.OleDb.OleDbType.VarWChar,10)); cmdi.Parameters[6].Value=tgrad.Text;
cmdi.ExecuteNonQuery(); tr.Commit(); MessageBox.Show("Adaugare efectuata cu succes!!","InFoMed",MessageBoxButtons.OK,MessageBoxIcon.Information);
catch(Exception exc)
{
MessageBox.Show("Mai exista un doctor cu id-ul "+tid.Text+"!!"+exc.Message,"InFoMed",MessageBoxButtons.OK,MessageBoxIcon.Error);
tr.Rollback();
cmdi.Transaction.Rollback();
//MessageBox.Show("rollback"); MessageBox.Show(exc.StackTrace);
MessageBox.Show(exc.Message);
}
and i got exception if i use only tr i don't use cmdi.transaction.etc i get the transaction is not longer available in catch block and the record is inserted and if i use only cmdi.transaction.etc i got + exc {"Object reference not set to an instance of an object." } whaT CAN I DO?
HOW I WORK WITH TRANS IN c#? PLS PLS NEED HELP