@@ -853,7 +853,10 @@ impl Connection {
853853 ///
854854 /// On success, returns the number of rows modified or 0 if not applicable.
855855 pub fn execute ( & self , query : & str , params : & [ & ToSql ] ) -> Result < uint > {
856- self . prepare ( query) . and_then ( |stmt| stmt. execute ( params) )
856+ let stmt = try!( self . prepare ( query) ) ;
857+ let out = try!( stmt. execute ( params) ) ;
858+ try!( stmt. finish ( ) ) ;
859+ Ok ( out)
857860 }
858861
859862 /// Execute a sequence of SQL statements.
@@ -999,7 +1002,10 @@ impl<'conn> Transaction<'conn> {
9991002
10001003 /// Like `Connection::execute`.
10011004 pub fn execute ( & self , query : & str , params : & [ & ToSql ] ) -> Result < uint > {
1002- self . prepare ( query) . and_then ( |s| s. execute ( params) )
1005+ let stmt = try!( self . prepare ( query) ) ;
1006+ let out = try!( stmt. execute ( params) ) ;
1007+ try!( stmt. finish ( ) ) ;
1008+ Ok ( out)
10031009 }
10041010
10051011 /// Like `Connection::batch_execute`.
@@ -1680,9 +1686,7 @@ pub trait GenericConnection {
16801686 fn prepare < ' a > ( & ' a self , query : & str ) -> Result < Statement < ' a > > ;
16811687
16821688 /// Like `Connection::execute`.
1683- fn execute ( & self , query : & str , params : & [ & ToSql ] ) -> Result < uint > {
1684- self . prepare ( query) . and_then ( |s| s. execute ( params) )
1685- }
1689+ fn execute ( & self , query : & str , params : & [ & ToSql ] ) -> Result < uint > ;
16861690
16871691 /// Like `Connection::prepare_copy_in`.
16881692 fn prepare_copy_in < ' a > ( & ' a self , table : & str , columns : & [ & str ] )
@@ -1700,6 +1704,10 @@ impl GenericConnection for Connection {
17001704 self . prepare ( query)
17011705 }
17021706
1707+ fn execute ( & self , query : & str , params : & [ & ToSql ] ) -> Result < uint > {
1708+ self . execute ( query, params)
1709+ }
1710+
17031711 fn transaction < ' a > ( & ' a self ) -> Result < Transaction < ' a > > {
17041712 self . transaction ( )
17051713 }
@@ -1719,6 +1727,10 @@ impl<'a> GenericConnection for Transaction<'a> {
17191727 self . prepare ( query)
17201728 }
17211729
1730+ fn execute ( & self , query : & str , params : & [ & ToSql ] ) -> Result < uint > {
1731+ self . execute ( query, params)
1732+ }
1733+
17221734 fn transaction < ' a > ( & ' a self ) -> Result < Transaction < ' a > > {
17231735 self . transaction ( )
17241736 }
0 commit comments