| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- //
- // System.Data.OleDb.OleDbCommand
- //
- // Authors:
- // Rodrigo Moya ([email protected])
- // Tim Coleman ([email protected])
- //
- // Copyright (C) Rodrigo Moya, 2002
- // Copyright (C) Tim Coleman, 2002
- //
- using System.ComponentModel;
- using System.Data;
- using System.Data.Common;
- using System.Collections;
- namespace System.Data.OleDb
- {
- /// <summary>
- /// Represents an SQL statement or stored procedure to execute against a data source.
- /// </summary>
- public sealed class OleDbCommand : Component, ICloneable, IDbCommand
- {
- #region Fields
- string commandText;
- int timeout;
- CommandType commandType;
- OleDbConnection connection;
- OleDbParameterCollection parameters;
- OleDbTransaction transaction;
- bool designTimeVisible;
- OleDbDataReader dataReader;
- CommandBehavior behavior;
- ArrayList gdaCommands;
- ArrayList gdaResults;
- #endregion // Fields
- #region Constructors
- public OleDbCommand ()
- {
- commandText = String.Empty;
- timeout = 30; // default timeout per .NET
- commandType = CommandType.Text;
- connection = null;
- parameters = new OleDbParameterCollection ();
- transaction = null;
- designTimeVisible = false;
- dataReader = null;
- behavior = CommandBehavior.Default;
- gdaCommands = new ArrayList ();
- gdaResults = new ArrayList ();
- }
- public OleDbCommand (string cmdText)
- : this ()
- {
- CommandText = cmdText;
- }
- public OleDbCommand (string cmdText, OleDbConnection connection)
- : this (cmdText)
- {
- Connection = connection;
- }
- public OleDbCommand (string cmdText, OleDbConnection connection, OleDbTransaction transaction)
- : this (cmdText, connection)
- {
- this.transaction = transaction;
- }
- #endregion // Constructors
- #region Properties
-
- public string CommandText
- {
- get { return commandText; }
- set {
- string[] queries = value.Split (new Char[] {';'});
- gdaCommands.Clear ();
- foreach (string query in queries)
- gdaCommands.Add (libgda.gda_command_new (query, 0, 0));
- commandText = value;
- }
- }
- public int CommandTimeout {
- get { return timeout; }
- set { timeout = value; }
- }
- public CommandType CommandType {
- get { return commandType; }
- set { commandType = value; }
- }
- public OleDbConnection Connection {
- get { return connection; }
- set { connection = value; }
- }
- public bool DesignTimeVisible {
- get { return designTimeVisible; }
- set { designTimeVisible = value; }
- }
- public OleDbParameterCollection Parameters {
- get { return parameters; }
- set { parameters = value; }
- }
- public OleDbTransaction Transaction {
- get { return transaction; }
- set { transaction = value; }
- }
- public UpdateRowSource UpdatedRowSource {
- [MonoTODO]
- get { throw new NotImplementedException (); }
- [MonoTODO]
- set { throw new NotImplementedException (); }
- }
- IDbConnection IDbCommand.Connection {
- get { return Connection; }
- set { Connection = (OleDbConnection) value; }
- }
- IDataParameterCollection IDbCommand.Parameters {
- get { return Parameters; }
- }
- IDbTransaction IDbCommand.Transaction {
- get { return Transaction; }
- set { Transaction = (OleDbTransaction) value; }
- }
- internal ArrayList GdaResults {
- get { return gdaResults; }
- }
- #endregion // Properties
- #region Methods
- [MonoTODO]
- public void Cancel ()
- {
- throw new NotImplementedException ();
- }
- public OleDbParameter CreateParameter ()
- {
- return new OleDbParameter ();
- }
- [MonoTODO]
- protected override void Dispose (bool disposing)
- {
- throw new NotImplementedException ();
- }
- public int ExecuteNonQuery ()
- {
- if (connection == null)
- throw new InvalidOperationException ();
- if (connection.State == ConnectionState.Closed)
- throw new InvalidOperationException ();
- // FIXME: a third check is mentioned in .NET docs
- IntPtr gdaConnection = connection.GdaConnection;
- IntPtr gdaParameterList = parameters.GdaParameterList;
- return libgda.gda_connection_execute_non_query (gdaConnection, (IntPtr) gdaCommands[0], gdaParameterList);
- }
- public OleDbDataReader ExecuteReader ()
- {
- return ExecuteReader (CommandBehavior.Default);
- }
- public OleDbDataReader ExecuteReader (CommandBehavior behavior)
- {
- if (connection.State != ConnectionState.Open)
- throw new InvalidOperationException ();
- this.behavior = behavior;
- IntPtr gdaConnection = connection.GdaConnection;
- IntPtr gdaParameterList = parameters.GdaParameterList;
- foreach (IntPtr gdaCommand in gdaCommands)
- GdaResults.Add (libgda.gda_connection_execute_single_command (gdaConnection, gdaCommand, gdaParameterList));
- dataReader = new OleDbDataReader (this);
- dataReader.NextResult ();
- return dataReader;
- }
- [MonoTODO]
- public object ExecuteScalar ()
- {
- throw new NotImplementedException ();
- }
- [MonoTODO]
- object ICloneable.Clone ()
- {
- throw new NotImplementedException ();
- }
- [MonoTODO]
- IDbDataParameter IDbCommand.CreateParameter ()
- {
- throw new NotImplementedException ();
- }
- [MonoTODO]
- IDataReader IDbCommand.ExecuteReader ()
- {
- throw new NotImplementedException ();
- }
- [MonoTODO]
- IDataReader IDbCommand.ExecuteReader (CommandBehavior behavior)
- {
- throw new NotImplementedException ();
- }
- [MonoTODO]
- public void Prepare ()
- {
- throw new NotImplementedException ();
- }
- public void ResetCommandTimeout ()
- {
- timeout = 30;
- }
- #endregion
- #region Internal Methods
- // only meant to be used between OleDbConnectioin,
- // OleDbCommand, and OleDbDataReader
- internal void OpenReader (OleDbDataReader reader)
- {
- connection.OpenReader (reader);
- }
- #endregion
- }
- }
|