public IEnumerable<DatabaseSchemaDto> GetDatabaseSchema(ConnectionOptions connectionOptions, string providerName)
        {
            var sqlQuery = new StringBuilder();
            sqlQuery.AppendLine("WITH T AS (");
            sqlQuery.AppendLine("   SELECT	TABLE_CATALOG AS TableCatalog, TABLE_SCHEMA AS TableSchema, TABLE_NAME AS TableName, TABLE_TYPE AS TableType ");
            sqlQuery.AppendLine("   FROM    INFORMATION_SCHEMA.TABLES ");
            sqlQuery.AppendLine("   UNION ALL ");
            sqlQuery.AppendLine("   SELECT	TABLE_CATALOG AS TableCatalog, TABLE_SCHEMA AS TableSchema, TABLE_NAME AS TableName, 'VIEW' AS TableType ");
            sqlQuery.AppendLine("   FROM    INFORMATION_SCHEMA.VIEWS ");
            sqlQuery.AppendLine(") ");
            sqlQuery.AppendLine(" SELECT    TableCatalog, TableSchema, TableName, TableType ");
            sqlQuery.AppendLine(" ROM       T ");

            return DatabaseReader.Create(connectionOptions, providerName).Reader.Select<DatabaseSchemaDto>(sqlQuery.ToString());
        }
        public IEnumerable<TableSchemaDto> GetTableSchema(ConnectionOptions connectionOptions, string providerName, string schema, string table)
        {
            var sqlQuery = new StringBuilder();
            sqlQuery.AppendLine(" SELECT	TABLE_CATALOG AS TableCatalog, TABLE_SCHEMA AS TableSchema, TABLE_NAME AS TableName ");
            sqlQuery.AppendLine("           ,COLUMN_NAME AS ColunmName, DATA_TYPE AS OriginalDataType, ORDINAL_POSITION AS OrdinalPosition, CHARACTER_MAXIMUM_LENGTH AS MaximumLength ");
            sqlQuery.AppendLine("           ,CASE   DATA_TYPE");
            sqlQuery.AppendLine("                   WHEN 'int' THEN 'integer' ");
            sqlQuery.AppendLine("                   WHEN 'bit' THEN 'integer' ");
            sqlQuery.AppendLine("                   WHEN 'float' THEN 'number' ");
            sqlQuery.AppendLine("                   WHEN 'datetime' THEN 'date' ");
            sqlQuery.AppendLine("                   ELSE 'string' ");
            sqlQuery.AppendLine("           END AS DataType ");
            sqlQuery.AppendLine(" FROM	    INFORMATION_SCHEMA.COLUMNS ");
            sqlQuery.AppendLine(" WHERE	    TABLE_SCHEMA = @TableSchema AND TABLE_NAME = @TableName ");

            return DatabaseReader.Create(connectionOptions, providerName).Reader.Select<TableSchemaDto>(sqlQuery.ToString(),
                new { TableSchema = schema, TableName = table });
        }
Exemplo n.º 3
0
        private IDataReader GetDataReaderOfAttachment()
        {
            var report = this.GetReport(this._attachmentTopic.ReportId);
            if (report == null)
            {
                this.SetErrorStatus("The report does not find.");
                return null;
            }

            var connectOpt = new ConnectionOptions
            {
                DataSource = report.Rdbms.Server,
                InitialCatalog = report.Rdbms.Catalog,
                UserId = report.Rdbms.UserId,
                Password = report.Rdbms.Password,
                ReadOnly = report.Rdbms.ReadOnly
            };
            var provider = report.Rdbms.Provider;

            var sqlStatement = this._attachmentTopic.SqlStatement;
            var parameters = this._attachmentTopic.Parameter;

            if (String.IsNullOrWhiteSpace(parameters))
                return StorageManager.CreateInstance(connectOpt, provider).GetDataReader(sqlStatement);

            var parms = StorageParameter.ConvertStringToParameter(parameters);
            return StorageManager.CreateInstance(connectOpt, provider).GetDataReader(sqlStatement, parms);
        }
Exemplo n.º 4
0
 public static DatabaseReader Create(ConnectionOptions connectionOptions, string providerName)
 {
     return new DatabaseReader(connectionOptions, providerName);
 }
Exemplo n.º 5
0
 private DatabaseReader(ConnectionOptions connectionOptions, string providerName)
 {
     this._connectionConfig = Tuple.Create(connectionOptions, providerName);
 }
Exemplo n.º 6
0
        private Tuple<ConnectionOptions, string> GetConnectionOption()
        {
            var rdbms = this.report.Rdbms;
            var connectionOpt = new ConnectionOptions
            {
                DataSource = rdbms.Server,
                InitialCatalog = rdbms.Catalog,
                UserId = rdbms.UserId,
                Password = rdbms.Password,
                ReadOnly = rdbms.ReadOnly
            };

            return Tuple.Create(connectionOpt, rdbms.Provider);
        }
        // 显示 Table / View 的信息(字段名及类型等)
        private IEnumerable<TableSchemaDto> GetTableSchema(RdbmsDto rdbms, string table)
        {
            var connOpt = new ConnectionOptions
            {
                DataSource = rdbms.Server,
                InitialCatalog = rdbms.Catalog,
                UserId = CryptoFactory.AES.Decrypt(rdbms.UserId),
                Password = CryptoFactory.AES.Decrypt(rdbms.Password),
                ReadOnly = rdbms.ReadOnly
            };

            var schemaService = ServiceLocator.Instance.Resolve<IReportSchemaQueryService>();
            return schemaService.GetTableSchema(connOpt, rdbms.Provider, "dbo", table);
        }
        private bool TestConnection(RdbmsDto rdbms)
        {
            var connectionOpt = new ConnectionOptions
            {
                DataSource = rdbms.Server,
                InitialCatalog = rdbms.Catalog,
                UserId = rdbms.UserId,
                Password = rdbms.Password,
                ReadOnly = rdbms.ReadOnly
            };

            var connTest = StorageManager.ConnectionTest(connectionOpt, rdbms.Provider);
            return connTest.Test();
        }