diff options
author | Sureshkumar T <suresh@mono-cvs.ximian.com> | 2005-08-08 15:46:00 +0400 |
---|---|---|
committer | Sureshkumar T <suresh@mono-cvs.ximian.com> | 2005-08-08 15:46:00 +0400 |
commit | 4d2591b6b3c46ae44654f0fa56c4295375a5d055 (patch) | |
tree | dff10ad07ab02d35276b09db71e5285144c4daaf /mcs/class/System.Data/System.Data.Odbc | |
parent | 930fd1697dd3a2656bd026f8f12d4c639c8b32fc (diff) |
2005-08-08 Sureshkumar T <tsureshkumar@novell.com>
* OdbcCommand.cs: Prepare (): Split SQLPrepare and SQLBind so that
already prepared statements can be reused with new parameter
values. ExecSQL (): create new statement handle, if not prepared
and there are no parameters. if there are parameters, prepare and
use.
svn path=/trunk/mcs/; revision=48118
Diffstat (limited to 'mcs/class/System.Data/System.Data.Odbc')
-rw-r--r-- | mcs/class/System.Data/System.Data.Odbc/ChangeLog | 8 | ||||
-rw-r--r-- | mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs | 28 |
2 files changed, 22 insertions, 14 deletions
diff --git a/mcs/class/System.Data/System.Data.Odbc/ChangeLog b/mcs/class/System.Data/System.Data.Odbc/ChangeLog index 92253492964..bb3b87aa3b3 100644 --- a/mcs/class/System.Data/System.Data.Odbc/ChangeLog +++ b/mcs/class/System.Data/System.Data.Odbc/ChangeLog @@ -1,3 +1,11 @@ +2005-08-08 Sureshkumar T <tsureshkumar@novell.com> + + * OdbcCommand.cs: Prepare (): Split SQLPrepare and SQLBind so that + already prepared statements can be reused with new parameter + values. ExecSQL (): create new statement handle, if not prepared + and there are no parameters. if there are parameters, prepare and + use. + 2005-08-05 Sureshkumar T <tsureshkumar@novell.com> * OdbcDataReader.cs: RecordsAffected: get value from command. diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs index 97caae575aa..e02c7d0f70b 100644 --- a/mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs +++ b/mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs @@ -375,18 +375,7 @@ namespace System.Data.Odbc private void ExecSQL(string sql) { OdbcReturn ret; - - if ((Parameters.Count>0) && !prepared) - Prepare(); - - if (prepared) - { - ret=libodbc.SQLExecute(hstmt); - if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo)) - throw new OdbcException(new OdbcError("SQLExecute",OdbcHandleType.Stmt,hstmt)); - } - else - { + if (! prepared && Parameters.Count <= 0) { ret=libodbc.SQLAllocHandle(OdbcHandleType.Stmt, Connection.hDbc, ref hstmt); if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo)) throw new OdbcException(new OdbcError("SQLAllocHandle",OdbcHandleType.Dbc,Connection.hDbc)); @@ -394,7 +383,16 @@ namespace System.Data.Odbc ret=libodbc.SQLExecDirect(hstmt, sql, sql.Length); if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo)) throw new OdbcException(new OdbcError("SQLExecDirect",OdbcHandleType.Stmt,hstmt)); + return; } + + if (!prepared) + Prepare(); + + BindParameters (); + ret=libodbc.SQLExecute(hstmt); + if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo)) + throw new OdbcException(new OdbcError("SQLExecute",OdbcHandleType.Stmt,hstmt)); } public @@ -452,15 +450,17 @@ namespace System.Data.Odbc ret=libodbc.SQLPrepare(hstmt, CommandText, CommandText.Length); if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo)) throw new OdbcException(new OdbcError("SQLPrepare",OdbcHandleType.Stmt,hstmt)); + prepared=true; + } + public void BindParameters () + { int i=1; foreach (OdbcParameter p in Parameters) { p.Bind(hstmt, i); i++; } - - prepared=true; } |