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;
}
}
}