Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSureshkumar T <suresh@mono-cvs.ximian.com>2005-08-08 15:46:00 +0400
committerSureshkumar T <suresh@mono-cvs.ximian.com>2005-08-08 15:46:00 +0400
commit4d2591b6b3c46ae44654f0fa56c4295375a5d055 (patch)
treedff10ad07ab02d35276b09db71e5285144c4daaf /mcs/class/System.Data/System.Data.Odbc
parent930fd1697dd3a2656bd026f8f12d4c639c8b32fc (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/ChangeLog8
-rw-r--r--mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs28
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;
}