Example #1
0
        public DMSqlResultSet ExecuteSql(string command)
        {
            var sql = new PCDSQLClass();

            sql.SetDST(DocumentSecurityToken);
            sql.SetLibrary(LibraryName);
            int ret = sql.Execute(command);

            if (ret != S_OK || sql.ErrNumber != 0)
            {
                throw new DMApiException(string.Format("PCDSQL.Execute failed with SQL error {0}.", sql.GetSQLErrorCode()), sql.ErrNumber, sql.ErrDescription);
            }

            var result = new DMSqlResultSet
            {
                ColumnCount  = sql.GetColumnCount(),
                RowCount     = sql.GetRowCount(),
                RowsAffected = sql.GetRowsAffected()
            };

            if (sql.ErrNumber != 0 && sql.ErrNumber != ErrNoResults)
            {
                throw new DMApiException("PCDSQL failed.", sql.ErrNumber, sql.ErrDescription);
            }

            try
            {
                for (int i = 0; i < result.ColumnCount; i++)
                {
                    result.ColumnNames[i] = Convert.ToString(sql.GetColumnName(i + 1)); // hi Basic lovers :)
                }
                for (int i = 0; i < result.RowCount; i++)
                {
                    var row = new DMSqlRow {
                        Values = new object[result.ColumnCount]
                    };
                    for (int j = 0; j < result.ColumnCount; j++)
                    {
                        row.Values[j] = sql.GetColumnValue(j + 1); // hi again...
                    }
                    result.Rows[i] = row;
                    sql.NextRow();
                }
                return(result);
            }
            finally
            {
                sql.ReleaseResults();
            }
        }
Example #2
0
 public DMSqlResultSet()
 {
     Rows        = new DMSqlRow[RowCount];
     ColumnNames = new string[ColumnCount];
 }