You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
11 KiB
295 lines
11 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
|
|
|
|
|
|
namespace formula_manage.Windows
|
|
{
|
|
/// <summary>
|
|
/// SQL_BAK.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class SQL_BAK : Window
|
|
{
|
|
public SQL_BAK()
|
|
{
|
|
System.Windows.MessageBox.Show("注意此功能仅作用与本地数据库(Dispensing)对于远端数据库的操作可能失败如果需要继续操作单击确定", "SQL", MessageBoxButton.OK, MessageBoxImage.Exclamation); //连接失败提示
|
|
WindowStartupLocation = WindowStartupLocation.CenterScreen;
|
|
InitializeComponent();
|
|
this.Closing += Window_Closing; //添加窗口关闭事件
|
|
}
|
|
|
|
bool SQLBAK;
|
|
bool SQLTIME;
|
|
int Time;
|
|
int i;
|
|
string SQLIP;
|
|
string SQLNAME;
|
|
bool SQLMOD;
|
|
string SQLUSER;
|
|
string SQLPASS;
|
|
|
|
public string INIPath = Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "formula.ini";
|
|
|
|
private void Window_SQLBAK(object sender, RoutedEventArgs e) //打开页面
|
|
{
|
|
UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(INIPath); //读配置文件
|
|
|
|
SQLIP = Configini.IniReadvalue("SQL_SERVER", "SQL1"); //读配置文件
|
|
SQLNAME = Configini.IniReadvalue("SQL_SERVER", "SQL2");
|
|
int.TryParse(Configini.IniReadvalue("SQL_SERVER", "SQL3"), out i); //读数据库状态配置文件
|
|
if (i == 0) SQLMOD = false;
|
|
else SQLMOD = true;
|
|
SQLUSER = Configini.IniReadvalue("SQL_SERVER", "SQL4");
|
|
SQLPASS = Configini.IniReadvalue("SQL_SERVER", "SQL5");
|
|
|
|
SQLBAK = Boolean.Parse(Configini.IniReadvalue("SQL_BAK", "S1"));
|
|
SQL_DISPEN_bak.Text = Configini.IniReadvalue("SQL_BAK", "S2");
|
|
SQLTIME = Boolean.Parse(Configini.IniReadvalue("SQL_BAK", "S3"));
|
|
int.TryParse(Configini.IniReadvalue("SQL_BAK", "S4"), out Time);
|
|
if (Time == 0) SQL_TIME.Text = "日";
|
|
else if(Time == 1) SQL_TIME.Text = "周";
|
|
else if (Time == 2) SQL_TIME.Text = "月";
|
|
else if (Time == 3) SQL_TIME.Text = "季";
|
|
else if (Time == 4) SQL_TIME.Text = "年";
|
|
|
|
SQL_bak.IsChecked = SQLBAK;
|
|
SQL_DISPEN_bak.IsEnabled = SQLBAK;
|
|
SQL_DISPEN_BUT.IsEnabled = SQLBAK;
|
|
SQL_bak_time.IsChecked = SQLTIME;
|
|
SQL_TIME.IsEnabled = SQLTIME;
|
|
}
|
|
|
|
private void SQLBAK_Checked(object sender, RoutedEventArgs e) //自定义备份地址状态
|
|
{
|
|
SQLBAK = SQL_bak.IsChecked.GetValueOrDefault();
|
|
SQL_DISPEN_bak.IsEnabled = SQLBAK;
|
|
SQL_DISPEN_BUT.IsEnabled = SQLBAK;
|
|
}
|
|
|
|
private void SQL_bak_time_Checked(object sender, RoutedEventArgs e) //自动保存
|
|
{
|
|
SQLTIME = SQL_bak_time.IsChecked.GetValueOrDefault();
|
|
SQL_TIME.IsEnabled = SQLTIME;
|
|
}
|
|
|
|
private void Button_Click(object sender, RoutedEventArgs e) //SQL_DISPEN_bak路径选择按钮
|
|
{
|
|
FolderBrowserDialog Dilog = new FolderBrowserDialog();
|
|
Dilog.SelectedPath = SQL_DISPEN_bak.Text; //打开目录
|
|
Dilog.ShowNewFolderButton = false; //不显示新建文件夹按钮
|
|
//
|
|
if (Dilog.ShowDialog() == System.Windows.Forms.DialogResult.OK )
|
|
{
|
|
SQL_DISPEN_bak.Text = Dilog.SelectedPath; //返回选择的字符串
|
|
}
|
|
}
|
|
|
|
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) //窗口关闭事件
|
|
{
|
|
UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(INIPath);
|
|
Configini.IniWritevalue("SQL_BAK", "S1", SQL_bak.IsChecked.GetValueOrDefault().ToString()); //保存自定义备份地址配置
|
|
Configini.IniWritevalue("SQL_BAK", "S2", SQL_DISPEN_bak.Text); //保存备份地址
|
|
Configini.IniWritevalue("SQL_BAK", "S3", SQL_bak_time.IsChecked.GetValueOrDefault().ToString()); //保存自动备份配置
|
|
if (SQL_TIME.Text == "日") Time = 0;
|
|
else if (SQL_TIME.Text == "周") Time = 1;
|
|
else if (SQL_TIME.Text == "月") Time = 2;
|
|
else if (SQL_TIME.Text == "季") Time = 3;
|
|
else if (SQL_TIME.Text == "年") Time = 4;
|
|
|
|
Configini.IniWritevalue("SQL_BAK", "S4", Time.ToString()); //保存自动备份周期
|
|
}
|
|
|
|
string Connstr_SC;
|
|
|
|
private bool Backup(string dbName, string filePath) // 备份数据库
|
|
{
|
|
if (!SQLMOD) //连接数据库测试
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
|
|
}
|
|
else
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
|
|
}
|
|
SqlConnection connection = new SqlConnection();
|
|
connection.ConnectionString = Connstr_SC;
|
|
connection.Open();
|
|
SqlCommand command = new SqlCommand();
|
|
command.Connection = connection;
|
|
command.CommandText = string.Format("backup database {0} to disk = '{1}'", dbName, filePath);
|
|
|
|
try
|
|
{
|
|
command.ExecuteNonQuery();
|
|
return true;
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
connection.Close();
|
|
}
|
|
}
|
|
|
|
private bool Restore(string dbName, string filePath) // 还原数据库
|
|
{
|
|
if (!SQLMOD) //连接数据库测试
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
|
|
}
|
|
else
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
|
|
}
|
|
SqlConnection connection = new SqlConnection(Connstr_SC);
|
|
SqlCommand command = new SqlCommand();
|
|
command.Connection = connection;
|
|
|
|
// 还原数据库
|
|
connection.Open();
|
|
command.CommandText = string.Format("use master restore database {0} from disk = '{1}' with replace", dbName, filePath);
|
|
try
|
|
{
|
|
command.ExecuteNonQuery();
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
connection.Close();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private async void Button_Click_1(object sender, RoutedEventArgs e)
|
|
{
|
|
bool ok;
|
|
System.DateTime.Now.ToString("yyyy-MM-dd_HH_mm_ss");
|
|
|
|
if (!SQLMOD) //连接数据库测试
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
|
|
}
|
|
else
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
|
|
}
|
|
|
|
try
|
|
{
|
|
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
|
await conn_SC.OpenAsync(); //连接数据库
|
|
conn_SC.Close();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
System.Windows.MessageBox.Show("数据库错误", "ERR", MessageBoxButton.OK, MessageBoxImage.Exclamation); //连接失败提示
|
|
return;
|
|
}
|
|
|
|
if ((bool)SQL_bak.IsChecked)
|
|
{
|
|
ok = Backup(SQLNAME, SQL_DISPEN_bak.Text + "\\" + SQLNAME + System.DateTime.Now.ToString("yyyy_MM_dd_HHmmss") + ".bak"); //指定地址备份
|
|
}
|
|
else
|
|
{
|
|
ok = Backup(SQLNAME, "C:\\SUNLIGHT\\" + SQLNAME + System.DateTime.Now.ToString("yyyy_MM_dd_HHmmss") + ".bak"); //默认备份到文档文件夹
|
|
}
|
|
|
|
if (ok)
|
|
{
|
|
System.Windows.MessageBox.Show("备份成功");
|
|
}
|
|
else
|
|
{
|
|
System.Windows.MessageBox.Show("备份失败");
|
|
}
|
|
}
|
|
|
|
private async void Button_Click_2(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!SQLMOD) //连接数据库测试
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
|
|
}
|
|
else
|
|
{
|
|
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
|
|
}
|
|
|
|
try
|
|
{
|
|
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
|
await conn_SC.OpenAsync(); //连接数据库
|
|
conn_SC.Close();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
System.Windows.MessageBox.Show("数据库错误", "ERR", MessageBoxButton.OK, MessageBoxImage.Exclamation); //连接失败提示
|
|
return;
|
|
}
|
|
|
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
openFileDialog.Title = "还原数据库";
|
|
openFileDialog.Filter = "备份文件(*.bak)|*.bak";
|
|
//openFileDialog.RestoreDirectory = true;
|
|
if ((bool)SQL_bak.IsChecked)
|
|
{
|
|
openFileDialog.InitialDirectory = SQL_DISPEN_bak.Text;
|
|
}
|
|
else
|
|
{
|
|
openFileDialog.InitialDirectory = "C:\\SUNLIGHT\\";
|
|
}
|
|
if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
{
|
|
bool ok = Restore(SQLNAME, openFileDialog.FileName);
|
|
if (ok)
|
|
{
|
|
System.Windows.MessageBox.Show("还原成功");
|
|
}
|
|
else
|
|
{
|
|
System.Windows.MessageBox.Show("还原失败");
|
|
}
|
|
}
|
|
|
|
|
|
/* if ((bool)SQL_bak.IsChecked)
|
|
{
|
|
ok = Backup(SQLNAME, SQL_DISPEN_bak.Text + "\\" + SQLNAME + ".bak"); //指定地址备份
|
|
}
|
|
else
|
|
{
|
|
ok = Backup(SQLNAME, Convert.ToString(Environment.SpecialFolder.MyDocuments) + SQLNAME + ".bak"); //默认备份到文档文件夹
|
|
}
|
|
|
|
if (ok)
|
|
{
|
|
System.Windows.MessageBox.Show("还原成功");
|
|
}
|
|
else
|
|
{
|
|
System.Windows.MessageBox.Show("还原失败");
|
|
} */
|
|
}
|
|
|
|
}
|
|
}
|
|
|