using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Management;
using System.IO;
namespace yb_caij.tool
{
class sysconfig
{
#region 數據類型轉換
/// <summary>
/// 字符型轉INT型
/// </summary>
/// <param name="str">要轉換的字符串</param>
/// <returns>轉換後的數字,如果錯誤返回0</returns>
public static int StrToInt(string str)
{
try
{
if (string.IsNullOrEmpty(str))
{
return 0;
}
else
{
return int.Parse(str);
}
}
catch (Exception ex)
{
wf_log(ex.Message);
return 0;
}
}
/// <summary>
/// 字符型轉INT型
/// </summary>
/// <param name="str">要轉換的字符串</param>
/// <param name="defaultValue">轉換失敗時返回的默認值</param>
/// <returns>轉換後的數字,如果錯誤返回默認值</returns>
public static int StrToInt(string str, int defaultValue)
{
try
{
if (string.IsNullOrEmpty(str))
{
return defaultValue;
}
else
{
return int.Parse(str);
}
}
catch (Exception ex)
{
wf_log(ex.Message);
return defaultValue;
}
}
/// <summary>
/// 字符型轉decimal型
/// </summary>
/// <param name="str">要轉換的字符串</param>
/// <returns>轉換後的數字,如果錯誤返回0</returns>
public static decimal StrToDec(string str)
{
try
{
if (string.IsNullOrEmpty(str))
{
return 0;
}
else
{
return Convert.ToDecimal(str);
}
}
catch (Exception ex)
{
wf_log(ex.Message);
return 0;
}
}
/// <summary>
/// 字符型轉decimal型
/// </summary>
/// <param name="str">要轉換的字符串</param>
/// <param name="defaultValue">轉換失敗時返回的默認值</param>
/// <returns>轉換後的數字,如果錯誤返回默認值</returns>
public static decimal StrToDec(string str, decimal defaultValue)
{
try
{
if (string.IsNullOrEmpty(str))
{
return defaultValue;
}
else
{
return Convert.ToDecimal(str);
}
}
catch (Exception ex)
{
wf_log(ex.Message);
return defaultValue;
}
}
#endregion
/// <summary>
/// 日誌
/// </summary>
/// <param name="str"></param>
public static void wf_log(string str)
{
try
{
FileStream fs = new FileStream("Log.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
StreamWriter swt = new StreamWriter(fs);
swt.Write(DateTime.Now.ToString() + swt.NewLine);
swt.WriteLine(str);
swt.Close();
fs.Close();
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 日誌
/// </summary>
/// <param name="ex">錯誤</param>
public static void wf_log(Exception ex)
{
try
{
FileStream fs = new FileStream("Log.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
StreamWriter swt = new StreamWriter(fs);
swt.Write(DateTime.Now.ToString() + swt.NewLine);
swt.WriteLine(ex.Message + Environment.NewLine + Environment.NewLine + ex.StackTrace);
swt.Close();
fs.Close();
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 獲得硬盤和cpu號
/// </summary>
/// <returns></returns>
public static string SetDHCPUID()
{
string CPUInfo = "";
string HDid = "";
string suij_str = "";
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
CPUInfo += mo.Properties["ProcessorId"].Value.ToString().Replace(" ", "").Replace("-", "");
}
cimobject = new ManagementClass("Win32_DiskDrive");
moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
if (mo.Properties["Model"].Value!=null)
{
HDid += mo.Properties["Model"].Value.ToString().Replace(" ", "").Replace("-", "");
}
}
suij_str = (CPUInfo + HDid).ToUpper();
if (suij_str.Length > 40)
{
suij_str = suij_str.Substring(0, 40);
}
return suij_str;
}
/// <summary>
/// 項目驗證
/// </summary>
/// <param name="t">datarow 行</param>
/// <param name="dv">DataView</param>
/// <param name="str">datarow需要對比的數據列</param>
/// <param name="str">對比條件</param>
/// <returns>存在返回true</returns>
public static bool yaop_yanz(DataRow t, DataView dv, string rowstr, string dstr)
{
string yiyypnm = t[rowstr].ToString();
if (dv.Table.Select(dstr + " = '" + yiyypnm + "'").Count() == 0)
{
return false;
}
else
{
return true;
}
}
/// <summary>
/// 獲得4位隨機數
/// </summary>
/// <returns></returns>
public static string suijs()
{
Random rnd = new Random();
return rnd.Next(0, 9999).ToString("0000");
}
/// <summary>
/// 打開xaml窗口
/// </summary>
/// <param name="type">命名</param>
/// <param name="xName">要打開的窗口</param>
public static void opXaml(Type type, string xName)
{
Assembly assembly = type.Assembly; //設置反射
Window win1 = (Window)assembly.CreateInstance(type.Namespace + "." + xName); //獲得反射窗口
win1.Show(); //打開窗口
}
/// <summary>
/// 打開xaml窗口
///
/// </summary>
/// <param name="name">窗口所在類 .如“framework.MainWindow”</param>
/// <param name="xName">要打開的窗口</param>
public static void opXaml(string name, string xName)
{
Type type = Type.GetType(name, true, true);//根據字符串獲取對應類型(Type) 轉
Assembly assembly = type.Assembly; //設置反射
Window win1 = (Window)assembly.CreateInstance(type.Namespace + "." + xName); //獲得反射窗口
win1.Show(); //打開窗口
}
/// <summary>
/// 以ShowDialog方式打開xaml窗口
/// </summary>
/// <param name="type">命名</param>
/// <param name="xName">要打開的窗口</param>
public static void opXamlDialog(Type type, string xName)
{
Assembly assembly = type.Assembly; //設置反射
Window win1 = (Window)assembly.CreateInstance(type.Namespace + "." + xName); //獲得反射窗口
win1.ShowDialog(); //打開窗口
}
/// <summary>
/// 隱藏所有控件
/// </summary>
/// <param name="grid">所要遍歷的Grid</param>
public static void setHide(Grid grid)
{
UIElement ui;
for (int j = 0; j < grid.Children.Count; j++)
{
ui = grid.Children[j] as UIElement;
ui.Visibility = Visibility.Hidden;
}
}
/// <summary>
/// 獲得系統時間
/// </summary>
/// <param name="dateformat">輸入日期格式 如"yyyy-MM-dd HH:mm:ss"</param>
/// <returns></returns>
public static string getDateTime(string dateformat)
{
return System.DateTime.Now.ToString(dateformat); ;
}
/// <summary>
/// 獲得數據庫連接字段
/// </summary>
/// <returns></returns>
public static string getDataSetting()
{
// return System.Configuration.ConfigurationSettings.AppSettings["DBConnectionString"].ToString();
// return System.Configuration.ConfigurationManager.AppSettings["DBConnectionString"].ToString();
return System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();
}
/// <summary>
/// 調用記事本
/// </summary>
public static void runNotePad()
{
System.Diagnostics.Process.Start("notepad.exe");
}
/// <summary>
/// 調用計算器
/// </summary>
public static void runcalc()
{
System.Diagnostics.Process.Start("calc.exe");
}
/// <summary>
/// 判斷是否爲數字
/// </summary>
/// <param name="_string"></param>
/// <returns></returns>
public static bool isNumberic_2(string _string)
{
try
{
if (string.IsNullOrEmpty(_string))
return false;
foreach (char c in _string)
{
if (!char.IsDigit(c))
//if(c<'0' c="">'9')//最好的方法,在下面測試數據中再加一個0,然後這種方法效率會搞10毫秒左右
return false;
}
return true;
}
catch (Exception et)
{
MessageBox.Show(et.ToString());
return true;
}
}
/// <summary>
/// 分割字符串,獲得分割標記之前的字符串
/// </summary>
/// <param name="str">被分割字符串</param>
/// <param name="bj">分割標記</param>
/// <returns></returns>
public static string strSubL(string str, string bj)
{
return str.Substring(0, str.IndexOf(bj));
}
/// <summary>
/// 分割字符串,獲得分割標記之後的字符串
/// </summary>
/// <param name="str">被分割字符串</param>
/// <param name="bj">分割標記</param>
/// <returns></returns>
public static string strSubR(string str, string bj)
{
return str.Substring(str.IndexOf(bj) + 1);
}
#region 配置文件操作
/// <summary>
/// 獲得配置文件指定條目
/// </summary>
/// <param name="itemName">要獲得的條目名</param>
/// <returns></returns>
public static string getappConfig(string itemName)
{
return ConfigurationManager.ConnectionStrings[itemName].ToString();
}
/// <summary>
/// 根據入參刪除節點
/// </summary>
/// <param name="itemName">刪除節點名</param>
/// <returns></returns>
public static bool delappConfig(string itemName)
{
try
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //獲得配置文件
ConnectionStringsSection csSection = config.ConnectionStrings; //獲得配置節對象
ConnectionStringSettingsCollection csCollection = csSection.ConnectionStrings;//獲得相關節的集合;
csCollection.Remove(itemName); //根據入參刪除節點
config.Save(ConfigurationSaveMode.Modified);//保存;
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 添加配置文件節點
/// </summary>
/// <param name="itemName">連接字符串的名稱</param>
/// <param name="str">連接字符串</param>
/// <param name="providerName">與連接字符串一起使用的提供程序的名稱</param>
/// <returns></returns>
public static bool addappConfig(string itemName, string str, string providerName)
{
try
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //獲得配置文件
ConnectionStringsSection csSection = config.ConnectionStrings; //獲得配置文件節點對象
csSection.ConnectionStrings.Add(new ConnectionStringSettings(itemName, str, providerName)); //新建節點
config.Save(ConfigurationSaveMode.Modified); //保存
return true;
}
catch (Exception)
{
return false;
}
}
#endregion
/// <summary>
/// 檢查數據庫連接
/// </summary>
/// <returns></returns>
public static bool CheckSqlConn(Label lbl,Window window)
{
SqlConnection conn = null; //創建連接
try
{
lbl.Content = "正在連接數據庫......"; //更改文本
string str = ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString(); //獲取數據庫連接字符串
if (str.Contains("metadata")) //判斷連接方式
{
string[] tmp;
tmp = str.Split('"'); //分割字符串
str = tmp[1]; //獲得連接字符
}
conn = new SqlConnection(str); //調用配置文件中配置
conn.Open(); //打開連接
// MessageBox.Show("連接數據庫成功"); //
conn.Close(); //關閉連接
return true;
}
catch (Exception ex)
{
tool.sysconfig.wf_log(ex);
ErrorWindow win = new ErrorWindow(ex);
win.ShowDialog();
// MessageBox.Show(e.ToString()); //彈出錯誤信息
// tool.sysconfig.opXaml(this.GetType(), "View.W_shujklj"); //如果錯誤就打開數據庫連接設置頁面
return false;
}
finally
{
if (conn != null)
{
//關閉數據庫連接
if (conn.State == System.Data.ConnectionState.Open)
{
conn.Close();
}
}
}
window.Hide();
return false;
}
}
}