private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (sure) { if (MessageBox.Show("确定要退出程序吗?", "退出提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { WriteLog.CreateLog(this.User.Username, "MainForm.FormClosing", "log", "用户:" + this.User.Username); LockSystem(); if (Configs.MonitorNetwork) { if (netMonitor.Adapters.Count() > 0) { netMonitor.StopMonitoring(); } if (timer2.Enabled) { timer2.Stop(); } } notifyIcon1.Dispose(); Environment.Exit(0); } else { e.Cancel = true; sure = false; } } else { e.Cancel = true; this.Hide(); } }
public object GetSingle(string SQLString, int Times, bool backupDB = false) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { try { connection.Open(); cmd.CommandTimeout = Times; object obj = cmd.ExecuteScalar(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return(null); } else { return(obj); } } catch (System.Data.SqlClient.SqlException e) { connection.Close(); WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(GetSingle(string SQLString, int Times)函数)", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } } } } }
public int ExecuteSqlByTime(string SQLString, int Times, bool backupDB = false) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { try { connection.Open(); cmd.CommandTimeout = Times; int rows = cmd.ExecuteNonQuery(); return(rows); } catch (System.Data.SqlClient.SqlException e) { connection.Close(); WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteSqlByTime函数):", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } } } } }
/// <summary> /// 执行查询语句,返回DataTable /// </summary> /// <param name="SQLString">查询语句</param> /// <returns>DataTable</returns> public DataTable Query(string SQLString, bool backupDB = false, params SqlParameter[] cmdParms) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataTable dt = new DataTable(); try { da.Fill(dt); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(Query(string SQLString, params SqlParameter[] cmdParms)函数)" + SQLString, "error", ex.Message); MessageBox.Show("数据库操作失败:" + ex.Message); } return(dt); } } } }
/// <summary> /// 这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,给大家做个参考 /// 做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { string str = ""; Exception error = e.Exception as Exception; if (error != null) { string strDateInfo = "出现应用程序未处理的线程异常:" + DateTime.Now.ToString() + "/r/n"; str = string.Format(strDateInfo + "异常类型:{0}/r/n异常消息:{1}/r/n异常信息:{2}/r/n", error.GetType().Name, error.Message, error.StackTrace); } else { str = string.Format("应用程序线程错误:{0}", e); } StackTrace st = new StackTrace(true); StackFrame sf = st.GetFrame(0); string fileName = sf.GetFileName(); Type type = sf.GetMethod().ReflectedType; string assName = type.Assembly.FullName; string typeName = type.FullName; string methodName = sf.GetMethod().Name; int lineNo = sf.GetFileLineNumber(); int colNo = sf.GetFileColumnNumber(); WriteLog.CreateLog("内部操作", typeName + "=>" + methodName + "(" + lineNo + "行" + colNo + "列)", "error", str); MessageBox.Show("发生应用程序线程致命错误,请及时联系系统管理员!", "线程错误", MessageBoxButtons.OK, MessageBoxIcon.Error); }
/// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString">SQL语句</param> /// <returns>影响的记录数</returns> public int ExecuteSql(string SQLString, bool backupDB = false, params SqlParameter[] cmdParms) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { using (SqlCommand cmd = new SqlCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); int rows = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return(rows); } catch (System.Data.SqlClient.SqlException e) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteSql(string SQLString, params SqlParameter[] cmdParms)函数)", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } } } } }
/// <summary> /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例) /// </summary> /// <param name="strSQL">SQL语句</param> /// <param name="fs">图像字节,数据库的字段类型为image的情况</param> /// <returns>影响的记录数</returns> public int ExecuteSqlInsertImg(string strSQL, byte[] fs, bool backupDB = false) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { SqlCommand cmd = new SqlCommand(strSQL, connection); System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image); myParameter.Value = fs; cmd.Parameters.Add(myParameter); try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return(rows); } catch (System.Data.SqlClient.SqlException e) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteSqlInsertImg函数)", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } finally { cmd.Dispose(); connection.Close(); } } } }
/// <summary> /// 执行一条计算查询结果语句,返回查询结果(object)。 /// </summary> /// <param name="SQLString">计算查询结果语句</param> /// <returns>查询结果(object)</returns> public object GetSingle(string SQLString, bool backupDB = false, params SqlParameter[] cmdParms) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { using (SqlCommand cmd = new SqlCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); object obj = cmd.ExecuteScalar(); cmd.Parameters.Clear(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return(null); } else { return(obj); } } catch (System.Data.SqlClient.SqlException e) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(GetSingle(string SQLString, params SqlParameter[] cmdParms)函数)", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(null); } } } } }
private void button2_Click(object sender, EventArgs e) { if (data == null || data.Rows.Count == 0) { MessageBox.Show("该Excel文件中无任何数据!"); return; } if (map.Count == 0) { MessageBox.Show("请先编辑字段映射!"); return; } if (MessageBox.Show("确定已经编辑好字段映射了么?" + Environment.NewLine + "本操作会清空原来的" + comboBox2.Text + "资料,请谨慎操作!", "导入提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { try { string file = BackupData(comboBox2.Text); if (file == "") { if (MessageBox.Show("确定要导入新数据么?", "没有任何旧数据提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { } else { return; } } else { MessageBox.Show("系统自动备份了" + comboBox2.Text + "的资料在[" + file + "]接下来将开始导入新数据..."); } } catch (Exception ex) { WriteLog.CreateLog("配置中心", "ImportForm.导入新资料前先备份旧资料", "error", ex.ToString()); } button2.Visible = false; progressBar1.Visible = true; progressBar1.BringToFront(); progressBar1.Value = 0; progressBar1.Maximum = data.Rows.Count; try { ImportData(data, map); } catch (Exception ex) { WriteLog.CreateLog("配置中心", "ImportForm.导入系统", "error", ex.ToString()); } finally { progressBar1.Visible = false; progressBar1.SendToBack(); button2.Visible = true; } } }
public static void GuanJi() { try { Process.Start("Shutdown.exe", "-s -t 0"); } catch (Exception ex) { WriteLog.CreateLog("内部操作", "OSOperation类的GuanJi函数", "error", ex.Message); } }
public bool Login(TextBox textBox1, TextBox textBox2) { string use = textBox1.Text.Trim(); string pwd = textBox2.Text; if (use != string.Empty) { RefreshMsg("正在获取用户信息..."); User user = UserLogic.GetInstance().GetUser(use); if (user != null && user.Flag == 0) { if (user.Password == pwd) { if (this.User != null && this.User.ID != user.ID) { //关掉所有的已经打开的窗口... foreach (TabPage page in tabControl1.TabPages) { CloseSubForm(page); } } this.User = user; toolStripStatusLabel3.Text = "当前用户:" + user.Username; WriteLog.CreateLog(this.User.Username, "MainForm.Login", "log", "用户:" + user.Username); UnlockSystem(); RefreshMsg("Ready..."); return(true); } else { MessageBox.Show("密码错误!"); textBox2.SelectAll(); textBox2.Focus(); } } else { MessageBox.Show("用户名错误或者该用户已经被禁用!"); textBox1.SelectAll(); textBox1.Focus(); } } else { MessageBox.Show("请输入用户名!"); textBox1.Focus(); } return(false); }
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { string str = string.Format("应用程序错误:{0},应用程序状态:{1}", e.ExceptionObject.ToString(), (e.IsTerminating ? "终止" : "未终止")); StackTrace st = new StackTrace(true); StackFrame sf = st.GetFrame(0); string fileName = sf.GetFileName(); Type type = sf.GetMethod().ReflectedType; //string assName = type.Assembly.FullName; string typeName = type.FullName; string methodName = sf.GetMethod().Name; int lineNo = sf.GetFileLineNumber(); int colNo = sf.GetFileColumnNumber(); WriteLog.CreateLog("内部操作", typeName + "=>" + methodName + "(" + lineNo + "行" + colNo + "列)", "error", str); MessageBox.Show("发生应用程序致命错误,请及时联系系统管理员!", "应用程序错误", MessageBoxButtons.OK, MessageBoxIcon.Error); }
/// <summary> /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ) /// </summary> /// <param name="strSQL">查询语句</param> /// <returns>SqlDataReader</returns> public SqlDataReader ExecuteReader(string strSQL, bool backupDB = false) { lock (lockObj) { SqlConnection connection = HelpConnection.GetConnection(backupDB); SqlCommand cmd = new SqlCommand(strSQL, connection); try { connection.Open(); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return(myReader); } catch (System.Data.SqlClient.SqlException e) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteReader函数):", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(null); } } }
/// <summary> /// 加密密钥后再对文件字符进行加密 /// </summary> public static void EncryptConfigFile(string filePath, string str) { FileStream fs = new FileStream(filePath, FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); try { formatter.Serialize(fs, EncryptAndDec.Encrypt2(str, "TIANSHUN")); } catch (SerializationException e) { WriteLog.CreateLog("内部操作", AppDomain.CurrentDomain.BaseDirectory, "ZipHelper类>EncryptConfigFile方法", "序列化失败,原因: " + e.Message); throw; } finally { fs.Close(); fs = null; } }
/// <summary> /// 截屏的方法 /// </summary> public static void CutScreen(string templatePath, int width, int height, int x, int y) { try { string tempImagePath = templatePath; string temp = tempImagePath + "\\CurrentScreenImage\\"; if (!Directory.Exists(temp)) { Directory.CreateDirectory(@temp); } Image i = new Bitmap(width, height); Graphics g = Graphics.FromImage(i); g.CopyFromScreen(new Point(x, y), new Point(0, 0), new Size(width, height)); i.Save(@temp + DateTime.Now.ToLocalTime().Ticks.ToString() + ".jpg"); } catch (Exception ex) { WriteLog.CreateLog("内部操作", "OSOperation类的CutScreen函数", "error", ex.Message); } }
/// <summary> /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ) /// </summary> /// <param name="strSQL">查询语句</param> /// <returns>SqlDataReader</returns> public SqlDataReader ExecuteReader(string SQLString, bool backupDB = false, params SqlParameter[] cmdParms) { lock (lockObj) { SqlConnection connection = HelpConnection.GetConnection(backupDB); SqlCommand cmd = new SqlCommand(); try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return(myReader); } catch (System.Data.SqlClient.SqlException e) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteReader(string SQLString, params SqlParameter[] cmdParms)函数)", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(null); } } }
/// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="SQLString">查询语句</param> /// <returns>DataSet</returns> public DataTable Query(string SQLString, bool backupDB = false) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { DataTable dt = new DataTable(); try { connection.Open(); SqlDataAdapter command = new SqlDataAdapter(SQLString, connection); command.Fill(dt); } catch (System.Data.SqlClient.SqlException ex) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(Query(string SQLString)函数)", "error", ex.Message); MessageBox.Show("数据库操作失败:" + ex.Message); } return(dt); } } }
/// <summary> /// 群发短信的接口 /// </summary> /// <param name="content"></param> /// <param name="mobiles"></param> /// <param name="greets"></param> /// <returns></returns> public static bool SendSMS(string content, List <string> mobiles, List <string> greets = null) { if (string.IsNullOrEmpty(content)) { return(false); } if (mobiles == null || mobiles.Count == 0) { return(false); } if (greets != null && greets.Count != mobiles.Count) { return(false); } try { string msg = content; for (int i = 0; i < mobiles.Count; i++) { string mobile = mobiles[i]; if (greets != null) { msg = greets[i] + ": " + msg; } string err; bool f = CallAssemblyToSendSMS(mobile, msg, out err);//调用发短信的基本接口 if (!f) { WriteLog.CreateLog("发送短信", "SMSLogic.SendSMS", "error", err); } } return(true); } catch (Exception) { return(false); } }
/// <summary> /// 解密配置文件并读入到xmldoc中 /// </summary> public static XmlNode DecryptConfigFile(string filePath) { FileStream fs = new FileStream(filePath, FileMode.Open); XmlDocument m_XmlDoc = new XmlDocument(); BinaryFormatter formatter = null; try { formatter = new BinaryFormatter(); m_XmlDoc.LoadXml(EncryptAndDec.Decrypt2((string)formatter.Deserialize(fs), "TIANSHUN")); return(m_XmlDoc.DocumentElement); } catch (SerializationException e) { WriteLog.CreateLog("内部操作", AppDomain.CurrentDomain.BaseDirectory, "ZipHelper类>DecryptConfigFile方法", "反序列化失败,原因:" + e.Message); throw; } finally { fs.Close(); fs = null; } }
/// <summary> /// 执行带一个存储过程参数的的SQL语句。 /// </summary> /// <param name="SQLString">SQL语句</param> /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param> /// <returns>影响的记录数</returns> public object ExecuteSqlGet(string SQLString, string content, bool backupDB = false) { lock (lockObj) { using (SqlConnection connection = HelpConnection.GetConnection(backupDB)) { SqlCommand cmd = new SqlCommand(SQLString, connection); System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText); myParameter.Value = content; cmd.Parameters.Add(myParameter); try { connection.Open(); object obj = cmd.ExecuteScalar(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return(null); } else { return(obj); } } catch (System.Data.SqlClient.SqlException e) { WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteSqlGet函数):", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } finally { cmd.Dispose(); connection.Close(); } } } }
private void 锁定ToolStripMenuItem1_Click(object sender, EventArgs e) { WriteLog.CreateLog(this.User.Username, "MainForm.锁定ToolStripMenuItem1", "log", "用户:" + this.User.Username); LockSystem(); }
/// <summary> /// 执行Sql和Oracle滴混合事务 /// </summary> /// <param name="list">SQL命令行列表</param> /// <param name="oracleCmdSqlList">Oracle命令行列表</param> /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns> public int ExecuteSqlTran(List <CommandInfo> list, List <CommandInfo> oracleCmdSqlList, bool backupDB = false) { lock (lockObj) { using (SqlConnection conn = HelpConnection.GetConnection(backupDB)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; SqlTransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { foreach (CommandInfo myDE in list) { string cmdText = myDE.CommandText; SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters; PrepareCommand(cmd, conn, tx, cmdText, cmdParms); if (myDE.EffentNextType == EffentNextType.SolicitationEvent) { if (myDE.CommandText.ToLower().IndexOf("count(") == -1) { tx.Rollback(); MessageBox.Show("数据库操作失败:违背要求" + myDE.CommandText + "必须符合select count(..的格式"); return(-1); } object obj = cmd.ExecuteScalar(); bool isHave = false; if (obj == null && obj == DBNull.Value) { isHave = false; } isHave = Convert.ToInt32(obj) > 0; if (isHave) { //引发事件 myDE.OnSolicitationEvent(); } } if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine) { if (myDE.CommandText.ToLower().IndexOf("count(") == -1) { tx.Rollback(); MessageBox.Show("数据库操作失败:违背要求" + myDE.CommandText + "必须符合select count(..的格式"); return(-1); } object obj = cmd.ExecuteScalar(); bool isHave = false; if (obj == null && obj == DBNull.Value) { isHave = false; } isHave = Convert.ToInt32(obj) > 0; if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave) { tx.Rollback(); MessageBox.Show("数据库操作失败:违背要求" + myDE.CommandText + "返回值必须大于0"); return(-1); } if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave) { tx.Rollback(); MessageBox.Show("数据库操作失败:违背要求" + myDE.CommandText + "返回值必须等于0"); return(-1); } continue; } int val = cmd.ExecuteNonQuery(); if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0) { tx.Rollback(); MessageBox.Show("数据库操作失败:违背要求" + myDE.CommandText + "必须有影响行"); return(-1); } cmd.Parameters.Clear(); } return(1); } catch (System.Data.SqlClient.SqlException e) { tx.Rollback(); WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteSqlTran函数):", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } catch (Exception e) { tx.Rollback(); WriteLog.CreateLog("数据库操作日志", "DbHelperSQL类(ExecuteSqlTran函数):", "error", e.Message); MessageBox.Show("数据库操作失败:" + e.Message); return(-1); } } } }