示例#1
0
        public DataFile Export(string database)
        {
            if (!context.DatabaseExists(database))
            {
                throw new InvalidOperationException("database does not exist");
            }

            string folderName         = Guid.NewGuid().ToString();
            string zipName            = folderName + DataConfig.zipExt;
            string absoluteFolderPath = Path.Combine(DataConfig.baseDir, DataConfig.exportDir, folderName);
            string absoluteZipPath    = Path.Combine(DataConfig.baseDir, DataConfig.exportDir, zipName);

            Directory.CreateDirectory(absoluteFolderPath);
            TableCollection tables = context.Tables;

            for (int i = 0; i < tables.Count; i++)
            {
                string tableName = tables[i].Name;

                StreamWriter writer      = new StreamWriter(Path.Combine(absoluteFolderPath, tableName + DataConfig.csvExt));
                string       selectQuery = SQLQueryGenerator.GetSelectQuery(tableName);
                context.ExecuteReader(selectQuery, (reader) => CSVReadWrite.CreateCsvFile(reader, writer));
            }

            ZipFile.CreateFromDirectory(absoluteFolderPath, absoluteZipPath);
            Directory.Delete(absoluteFolderPath, true);

            DataFile file = new DataFile(Path.Combine(DataConfig.baseDir, DataConfig.exportDir, zipName), zipName, database);

            return(file);
        }
示例#2
0
        public void Import(DataFile file)
        {
            if (!context.DatabaseExists(file.database))
            {
                context.CreateDatabase(file.database);
            }

            DataSet dataSet = new DataSet(file.database);

            dataSet.ReadXml(file.path);
            DataTableCollection tables = dataSet.Tables;

            for (int i = 0; i < tables.Count; i++)
            {
                DataTable table       = tables[i];
                string[]  columnNames = new string[table.Columns.Count];

                for (int j = 0; j < table.Columns.Count; j++)
                {
                    columnNames[j] = table.Columns[j].ColumnName;
                }

                string query = SQLQueryGenerator.GetCreateTableQuery(table.TableName, columnNames);
                context.ExecuteNonQuery(query);
            }
        }
示例#3
0
        public DataFile Export(string database)
        {
            string fileName     = database + DataConfig.xmlExt;
            string relativePath = Path.Combine(DataConfig.exportDir, fileName);
            string absolutePath = Path.Combine(DataConfig.baseDir, relativePath);

            string          query  = string.Empty;
            TableCollection tables = context.Tables;

            for (int i = 0; i < tables.Count; i++)
            {
                if (i > 0)
                {
                    query += ";";
                }
                query += SQLQueryGenerator.GetSelectQuery(tables[i].Name);
            }

            DataSet dataSet = context.SelectRows(query);

            dataSet.DataSetName = database;

            for (int i = 0; i < dataSet.Tables.Count; i++)
            {
                dataSet.Tables[i].TableName = tables[i].Name;
            }

            DataFile file = new DataFile(absolutePath, fileName, database);

            dataSet.WriteXml(file.path);

            return(file);
        }
示例#4
0
        public void CreateDatabase(string database)
        {
            if (DatabaseExists(database))
            {
                throw new InvalidOperationException("database already exists");
            }
            string query = SQLQueryGenerator.GetCreateDatabaseQuery(database);

            ExecuteNonQuery(query);
            ChangeDatabase(database);
        }
示例#5
0
        public List <ColumnModel> GetColumns(string table)
        {
            List <ColumnModel> columns    = new List <ColumnModel>();
            ColumnCollection   collection = context.Tables[table].Columns;

            string query = SQLQueryGenerator.GetSelectQuery(table);

            context.ExecuteReader(query, (reader) => DataModelFactory.FillColumns(reader, collection, columns));

            return(columns);
        }
示例#6
0
        private void CreateDatabaseTable(DataFile file, DataTable data, SqlBulkCopy bulkCopy)
        {
            DataColumnCollection columns = data.Columns;

            string[] columnNames = new string[columns.Count];

            for (int i = 0; i < columns.Count; i++)
            {
                string columnName = columnNames[i] = columns[i].ColumnName;
                bulkCopy.ColumnMappings.Add(columnName, columnName);
            }

            string createTableQuery = SQLQueryGenerator.GetCreateTableQuery(file.fileName, columnNames);

            context.ExecuteNonQuery(createTableQuery);
            context.Refresh();

            bulkCopy.DestinationTableName = SQLQueryGenerator.EncloseInBrackets(file.fileName);
            bulkCopy.WriteToServer(data);
        }