c# - ExecuteNonQuery doesn't work -


here code :

document doc = new document();  sqlconnection cnn = ketnoi.getsqlconnection(); cnn.open();  sqltransaction trans = cnn.begintransaction();          doc.setchomuon(false);         doc.setgia(txtgia.text.tostring().trim());         doc.setisbn(txtisbn.text.tostring().trim());         doc.setkhosach(txtkhosach.text.tostring().trim());         doc.setmann(cbmangonngu.text.tostring().trim());         doc.setmanxb(cbmanxb.text.tostring().trim());         doc.setmatl(cbmatheloai.text.tostring().trim());         doc.setnoidung(txtnoidung.text.tostring());         doc.setslxb(txtlxb.text.tostring().trim());         doc.setsotrang(txtlxb.text.tostring().trim());         doc.settensach(txttensach.text.tostring().trim());         doc.settgxb(dtbngayxb.text.tostring());         doc.settinhtrang(true);         doc.setmangantu(cbmangantu.text.tostring().trim());         doc.setmasach(txtmasach.text.tostring().trim());  sqlcommand cmd = new sqlcommand();  if (rdsach.checked == true) {    cmd = new sqlcommand("checkdoc", cnn, trans); } else if (rdsachdt.checked == true) {    cmd = new sqlcommand("checkedoc", cnn, trans); }  cmd.commandtype = commandtype.storedprocedure; cmd.parameters.addwithvalue(@"isbn", doc.getisbn()); cmd.parameters.addwithvalue(@"masach", doc.getmasach()); sqlparameter paramreturnvalue = new sqlparameter(); paramreturnvalue = cmd.parameters.add("return_value", sqldbtype.int); paramreturnvalue.direction = parameterdirection.returnvalue;  try {     cmd.executenonquery(); } catch (exception mess) {     messagebox.show(mess.message);     cnn.close(); }  if ((int)cmd.parameters["return_value"].value == 1) {    messagebox.show(" isbn existed ! ");    cnn.close(); } else if ((int)cmd.parameters["return_value"].value == 0) {     cmd.parameters.addwithvalue(@"tensach", doc.gettensach());     cmd.parameters.addwithvalue(@"khosach", doc.getkhosach());     cmd.parameters.addwithvalue(@"noidung", doc.getnoidung());     cmd.parameters.addwithvalue(@"hinhanhpath", doc.gethinhanh());     cmd.parameters.addwithvalue(@"ngayxuatban", datetime.parse(doc.gettgxb()));     cmd.parameters.addwithvalue(@"lanxuatban", int.parse(doc.getslxb()));     cmd.parameters.addwithvalue(@"sotrang", int.parse(doc.getsotrang()));     cmd.parameters.addwithvalue(@"gia", int64.parse(doc.getgia()));     cmd.parameters.addwithvalue(@"manxb", int.parse(doc.getmanxb()));     cmd.parameters.addwithvalue(@"mangonngu", int.parse(doc.getmann()));     cmd.parameters.addwithvalue(@"matl", doc.getmatl());     cmd.parameters.addwithvalue(@"tinhtrang", doc.gettinhtrang());     cmd.parameters.addwithvalue(@"chomuon", doc.getchomuon());     cmd.parameters.addwithvalue(@"mangantu", int.parse(doc.getmangantu()));      if (rdsach.checked == true)         cmd.commandtext = "insert";     else if (rdsachdt.checked == true)     {         cmd.commandtext = "insertedoc";         cmd.parameters.addwithvalue(@"filesach", doc.getfilesach());         cmd.parameters.addwithvalue(@"sldown", int64.parse(doc.getsolandown()));         cmd.parameters.addwithvalue(@"down", doc.getchophepdown());     }      try     {         cmd.executenonquery();         messagebox.show("success");         cnn.close();     }     catch (exception mess)     {         messagebox.show(mess.message);         trans.rollback();         cnn.close();     } } 

my stored procedures in sql server:

alter proc [dbo].[checkdoc] (@isbn varchar(10), @masach varchar(10))    if exists(select * sach isbn = @isbn or masach=@masach)      return 1    else      return 0  alter proc [dbo].[insertdoc](    @isbn char(10),    @tensach varchar(100),    @khosach varchar(5),    @noidung varchar(300),    @hinhanhpath varchar(50),    @ngayxuatban smalldatetime,    @lanxuatban int,    @sotrang int,    @gia bigint,    @manxb int,    @mangonngu int,    @matl char(5),    @masach varchar(10),    @tinhtrang bit,    @chomuon bit,    @mangantu int )        insert isbn values( @isbn, @tensach, @khosach, @noidung, @hinhanhpath, @ngayxuatban, @lanxuatban, @sotrang, @gia, @manxb, @mangonngu, @matl  ) insert sach values(@isbn, @masach, @tinhtrang, @chomuon, @mangantu) 

everything ok when debug it. after received message success check in sql server, no row affected. did refresh table , stored procedure works in sql server when call in asp.net, doesn't work. great.

i'm not familiar c# , sql integration, i'm pretty sure you're missing transaction commit in last try-catch block:

        try         {             cmd.executenonquery();             messagebox.show("success");             cnn.close();         }         catch (exception mess)         {             messagebox.show(mess.message);             trans.rollback();             cnn.close();         } 

should like:

        try         {             cmd.executenonquery();             messagebox.show("success");             trans.commit();             cnn.close();         }         catch (exception mess)         {             messagebox.show(mess.message);             trans.rollback();             cnn.close();         } 

note "trans.commit()" before close connection.


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -