⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 joinqueryresultset.cs

📁 Microsoft Mobile Development Handbook的代码,有C#,VB,C++的
💻 CS
字号:
namespace MobileDevelopersHandbook.JoinQueryResultSetResultSets
{
    using System;
    using System.Data;
    using System.Data.SqlServerCe;

    partial class ProductsCategoryResultSet : IDisposable
    {

        const string databaseFilename = "MyDatabase.sdf";
        const string tableName = "ProductsCategory";

        /// <summary>
        /// Construct the ResultSet instance initializing the ResultSetOptions and connection string
        /// optionally opening the table. Calling this method with an openTable value of true provides
        /// the same behavior as using the default constructor.
        /// </summary>
        /// <param name="openTable"></param>
        /// <param name="connString"></param>
        public ProductsCategoryResultSet(bool openTable, string connString)
        {
            InitializeResultSetOptions();
            resultSetConnectionString = connString;

            if (openTable)
                this.Open();
        }

        /// <summary>
        /// ResultSet will contain those records 
        /// </summary>
        /// <param name="commandText"></param>
        public void Open(string sqlCommandText)
        {
            using (SqlCeCommand sqlCeSelectCommand = CreateConnectionAndCommand())
            {
                sqlCeSelectCommand.CommandText = sqlCommandText;
                sqlCeSelectCommand.CommandType = System.Data.CommandType.Text;

                sqlCeSelectCommand.ExecuteResultSet(ResultSetOptions, this);
            }
        }

        /// <summary>
        /// ResultSet will contain only those records where the value of the specified index falls
        /// within rangeStart and rangeEnd inclusive. Records will be returned in the order of the index.
        /// If rangeStart is null, the ResultSet will contain the whole table with the records returned
        /// in the order of the index
        /// </summary>
        /// <param name="indexName"></param>
        /// <param name="rangeStart"></param>
        /// <param name="rangeEnd"></param>
        public void Open(string indexName, object[] rangeStart, object[] rangeEnd)
        {
            using (SqlCeCommand sqlCeSelectCommand = CreateConnectionAndCommand())
            {
                sqlCeSelectCommand.CommandText = tableName;
                sqlCeSelectCommand.CommandType = System.Data.CommandType.TableDirect;
                sqlCeSelectCommand.IndexName = indexName;

                // If a range value specified, call SetRange - start w/o end is legal, but not vice versa
                if (rangeStart != null)
                    sqlCeSelectCommand.SetRange(DbRangeOptions.Default, rangeStart, rangeEnd);

                sqlCeSelectCommand.ExecuteResultSet(this.resultSetOptions, this);
            }
        }

        /// <summary>
        /// See the summary of Open(string indexName, object[] rangeStart, object[] rangeEnd)
        /// for details.
        /// This method is a wrapper provided for convenience in those cases where the specified index 
        /// contains only a single column
        /// </summary>
        /// <param name="indexName"></param>
        /// <param name="rangeStart"></param>
        /// <param name="rangeEnd"></param>
        public void Open(string indexName, object rangeStart, object rangeEnd)
        {
            Open(indexName, new object[] { rangeStart }, new object[] { rangeEnd });
        }

        /// <summary>
        /// ResultSet will contain only those records where the value of the specified index falls
        /// within the criteria set by the rangeOptions, rangeStart, rangeEnd criteria. Records will be returned in the order of the index.
        /// </summary>
        /// <param name="indexName"></param>
        /// <param name="rangeOptions"></param>
        /// <param name="rangeStart"></param>
        /// <param name="rangeEnd"></param>
        public void Open(string indexName, DbRangeOptions rangeOptions, object[] rangeStart, object[] rangeEnd)
        {
            using (SqlCeCommand sqlCeSelectCommand = CreateConnectionAndCommand())
            {
                sqlCeSelectCommand.CommandText = tableName;
                sqlCeSelectCommand.CommandType = System.Data.CommandType.TableDirect;
                sqlCeSelectCommand.IndexName = indexName;

                sqlCeSelectCommand.SetRange(rangeOptions, rangeStart, rangeEnd);

                sqlCeSelectCommand.ExecuteResultSet(this.resultSetOptions, this);
            }
        }

        /// <summary>
        /// See the summary of Open(string indexName, DbRangeOptions rangeOptions, object[] rangeStart, object[] rangeEnd)
        /// for details.
        /// This method is a wrapper provided for convenience in those cases where the specified index 
        /// contains only a single column
        /// </summary>
        /// <param name="indexName"></param>
        /// <param name="rangeOptions"></param>
        /// <param name="rangeStart"></param>
        /// <param name="rangeEnd"></param>
        public void Open(string indexName, DbRangeOptions rangeOptions, object rangeStart, object rangeEnd)
        {
            Open(indexName, rangeOptions, new object[] { rangeStart }, new object[] { rangeEnd });
        }

        /// <summary>
        /// Make connection string value publicly visible
        /// </summary>
        public string ResultSetConnectionString
        {
            get { return resultSetConnectionString; }
        }

        /// <summary>
        /// Make options publicly visible
        /// </summary>
        public ResultSetOptions ResultSetOptions
        {
            get { return resultSetOptions; }
        }

        #region InitializeResultSetConnectionString, InitializeResultSetOptions, CreateConnectionAndCommand
        /// <summary>
        /// Set the resultSetConnectionString member variable to the default connection string.
        /// </summary>
        protected void InitializeResultSetConnectionString()
        {
            if (resultSetConnectionString == null)
            {
                resultSetConnectionString = ("Data Source ="
                    + (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
                    + "\\" + databaseFilename + ";"));
            }
        }

        /// <summary>
        /// Set the resultSetOptions member variable to the default values. By default it is set
        /// to support scrolling, updates and be sensitive to changes in the datasource.
        /// </summary>
        protected void InitializeResultSetOptions()
        {
            resultSetOptions = System.Data.SqlServerCe.ResultSetOptions.Scrollable;
            resultSetOptions = (resultSetOptions | System.Data.SqlServerCe.ResultSetOptions.Sensitive);
            resultSetOptions = (resultSetOptions | System.Data.SqlServerCe.ResultSetOptions.Updatable);
        }

        /// <summary>
        /// Creates a connection, opens it and factories a command instance from the connection
        /// </summary>
        /// <returns></returns>
        protected SqlCeCommand CreateConnectionAndCommand()
        {
            sqlCeConnection = new System.Data.SqlServerCe.SqlCeConnection(ResultSetConnectionString);
            sqlCeConnection.Open();

            return sqlCeConnection.CreateCommand();
        }
        #endregion

        #region IDisposable Members

        public new void Dispose()
        {
            if (this.Connection != null)
            {
                this.Connection.Dispose();
            }
            base.Dispose();
        }

        #endregion
    }
}



public partial class MultiTableResultSet {
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -