Пришлось удалить любые виды двойной буферизации / createparams и т. Д. Из мастер-формы и поместить их исключительно в дочерние формы ....
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
frmChild()
{
ResizeRedraw = true;
this.SetStyle(ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint | ControlStyles.SupportsTransparentBackColor, true);
}
Каждая система баз данных идет с некоторой программой для дампа ее содержания.
Можно просто назвать ту программу от использования PHP system()
или shell_exec()
.
Например, если Вы используете PostgreSQL с включенной аутентификацией Ident и хотите вывести Базу данных test
непосредственно как код на SQL к браузеру, это столь же просто как:
<?php
header('Content-type: text/plain');
system('pg_dump test');
?>
При использовании MySQL с пользователем базы данных и паролем, сохраненным в ~/.my.cnf
, это также очень просто:
<?php
header('Content-type: text/plain');
system('mysqldump test');
?>
Однако не делайте этого:
потому что, передавая пароль, поскольку параметр командной строки очень небезопасен.
<?php
header('Content-type: text/plain');
system('mysqldump -utestuser -ptestpassword test');
?>
Это - довольно сложный процесс. Я рекомендую использовать phpmyadmin или подобный.
Пока резервное копирование базы данных, "совместимой к ANSI SQL", возможно и замечательно, Вы все еще встретитесь с проблемами мобильности. Самое очевидное - то, что, пока формат MySQL dump/restore довольно быстр, он достигает этого преимущественно при помощи нестандартного расширения SQL. Таким образом, Вы не можете только вручить дамп PostGresql:ничего не выйдет. на самом деле PostGresql является также довольно медленным при обработке огромного количества операторов INSERT. Это - собственное использование формата дампа свой собственный пользовательский SQL-оператор, оптимизированный для вставки большого объема данных сразу.