예제 #1
0
        /// <summary>
        /// Open a V-SQL query. Open is used with SELECT statements only.
        /// </summary>
        public void Open()
        {
            //Open SQL Query
            //Set rowsAffected
            //Fill 'columns' (meta data structure)

            if (queryID <= 0)
            {
                return;
            }

            int rowsaffected = 0;

            lock (syncRoot)
            {
                VistaDBAPI.ivsql_SetSQL(queryID, commandText);

                sqlID = VistaDBAPI.ivsql_Open(queryID, ref rowsaffected);

                InternalInitFieldDefs();

                recordCount = VistaDBAPI.ivsql_RecCount(queryID);

                rowsAffected = rowsaffected;

                opened = true;
            }
        }
예제 #2
0
        /// <summary>
        /// Open a V-SQL query. Open is used with SELECT statements only.
        /// </summary>
        public override void Open()
        {
            //Open SQL Query
            //Set rowsAffected
            //Fill 'columns' (meta data structure)

            if (this.queryID == 0)
            {
                return;
            }

            lock (syncRoot)
            {
                this.rowsAffected = 0;

                VistaDBAPI.ivsql_SetSQL(this.queryID, this.commandText);

                VistaDBAPI.ivsql_Open(this.queryID, ref this.rowsAffected);

                InternalInitFieldDefs();

                this.recordCount = VistaDBAPI.ivsql_RecCount(this.queryID);

                this.opened          = true;
                this.startTraversing = true;
            }
        }
예제 #3
0
        private int InternalInitFieldDefs()
        {
            if (queryID <= 0)
            {
                return(0);
            }

            lock (syncRoot)
            {
                recordCount = VistaDBAPI.ivsql_RecCount(queryID);
                columnCount = VistaDBAPI.ivsql_ColumnCount(queryID);
                columns     = new VistaDBColumn[columnCount];
                char colType;
                int  len;

                int           columnCaptionWidth = 128;
                StringBuilder columnCaption      = new StringBuilder(columnCaptionWidth);

                int           columnNameWidth = 128;
                StringBuilder columnName      = new StringBuilder(columnNameWidth);

                VistaDBType columntype;
                bool        allowNull, readOnly, autoIncrement, primaryKey, unique, reservedWord;
                int         dataSize, columnWidth;

                string tempS;
                for (int i = 0; i < columnCount; i++)
                {
                    len = VistaDBAPI.ivsql_ColumnName(queryID, i + 1, columnName, columnNameWidth);
                    columnName.Length = len;

                    len = VistaDBAPI.ivsql_ColumnCaption(queryID, i + 1, columnCaption, columnCaptionWidth);
                    columnCaption.Length = len;

                    colType = VistaDBAPI.ivsql_ColumnType(queryID, i + 1);
                    tempS   = colType.ToString();

                    columntype = VistaDBAPI.NetDataType(tempS);

                    dataSize      = 0;                     // default
                    columnWidth   = 0;                     // default
                    allowNull     = !VistaDBAPI.ivsql_ColumnRequired(queryID, i + 1);
                    readOnly      = VistaDBAPI.ivsql_ColumnReadOnly(queryID, i + 1);
                    autoIncrement = VistaDBAPI.ivsql_ColumnIsIdentity(queryID, i + 1);
                    primaryKey    = VistaDBAPI.ivsql_ColumnIsPrimaryKey(queryID, i + 1);
                    unique        = VistaDBAPI.ivsql_ColumnIsUnique(queryID, i + 1);
                    reservedWord  = VistaDBAPI.ivsql_IsReservedWord(columnName.ToString());

                    switch (columntype)
                    {
                    case VistaDBType.Character:
                        columnWidth = VistaDBAPI.ivsql_ColumnWidth(queryID, i + 1);
                        dataSize    = columnWidth;
                        break;

                    case VistaDBType.Varchar:
                        columnWidth = VistaDBAPI.ivsql_ColumnWidth(queryID, i + 1);
                        dataSize    = columnWidth;
                        break;

                    case VistaDBType.Date:
                        dataSize = 8;
                        break;

                    case VistaDBType.DateTime:
                        dataSize = 8;
                        break;

                    case VistaDBType.Boolean:
                        dataSize = 2;
                        break;

                    case VistaDBType.Int32:
                        dataSize = 4;
                        break;

                    case VistaDBType.Int64:
                        dataSize = 8;
                        break;

                    case VistaDBType.Currency:
                        dataSize = 8;
                        break;

                    case VistaDBType.Double:
                        dataSize = 8;
                        break;

                    case VistaDBType.Memo:
                    case VistaDBType.Blob:
                    case VistaDBType.Picture:
                        dataSize = 2147483647;
                        break;

                    case VistaDBType.Guid:
                        dataSize = 16;
                        break;
                    }

                    columns[i] = new VistaDBColumn(columnName.ToString(), columntype, dataSize, (short)columnWidth, 0, allowNull, readOnly, primaryKey, unique, autoIncrement, 0, "", columnCaption.ToString(), "", reservedWord, false, false, false, false);
                }
            }

            return(errorNumber);
        }