|
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Security.Cryptography; using System.Data; using System.Reflection; using System.Data.SqlClient; using System.Net; using System.Net.Sockets; //using System.Windows.Forms;
using System.Data.OleDb; using System.CodeDom.Compiler; using System.CodeDom; //using System.Web.Services.Description;
using ICSSoft.Base.Config.DBHelper;
namespace ICSSoft.Frame.Data.DAL { public class APPConfigForOracl { public class AppConfig { #region 数据库连接符
/// <summary>
/// 框架数据库连接
/// </summary>
public static string FrameConnectString = ""; /// <summary>
/// 实际应用软件的数据库连接
/// </summary>
public static string AppConnectString = ""; #endregion
#region 用户登陆时提供的信息
/// <summary>
/// 用户的唯一标识
/// </summary>
public static string UserId = ""; /// <summary>
/// 当前登陆用户账户
/// </summary>
public static string UserCode = ""; /// <summary>
/// 当前登陆用户姓名
/// </summary>
public static string UserName = ""; /// <summary>
/// 当前登陆用户口令(加密)
/// </summary>
public static string UserPwd = ""; /// <summary>
/// 站点编号
/// </summary>
public static string WorkPointCode = ""; /// <summary>
/// 站点名称
/// </summary>
public static string WorkPointName = ""; /// <summary>
/// 当前用户是否管理员
/// </summary>
public static bool AdminFlag = false; /// <summary>
/// 公司名称
/// </summary>
public static string CompanyName = "";
/// <summary>
/// 当前语言包 1代表简体 2 代表繁体 3代表英文
/// </summary>
public static string LangIndex = "1";
///// <summary>
///// 转换规则
///// </summary>
//public static string LangConvert = "";
/// <summary>
/// 基础服务的路径
/// </summary>
public static string BaseServicePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\BaseServiceConfig\\";
/// <summary>
/// 基础服务设置文件
/// </summary>
public static string BaseServiceFile = BaseServicePath + "baseserviceurl.ini"; /// <summary>
/// 登录时保存路径
/// </summary>
public static string LoginConfigPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\LoginConfig\\";
/// <summary>
/// 登录时保存文件
/// </summary>
public static string LoginConfigFile = LoginConfigPath + "loginconfig.ini"; /// <summary>
/// 语言库设置路径
/// </summary>
public static string LanguageConfigPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Language\\"; /// <summary>
/// 语言包XML
/// </summary>
public static string LanguageConfigFile = LanguageConfigPath + "lang.xml"; /// <summary>
/// 默认语言文件
/// </summary>
public static string LanguageConfigDefaultStyle = LanguageConfigPath + "defaultlang.ini"; /// <summary>
/// 图片资源路径
/// </summary>
public static string ResourcePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Resource\\";
/// <summary>
/// 新版图片资源
/// </summary>
public static string ImagesPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Images\\";
/// <summary>
/// 系统图片
/// </summary>
//public static ImageList SysImageList = new ImageList();
/// <summary>
/// 新版系统图片
/// </summary>
//public static ImageList NewSysImageList = new ImageList();
/// <summary>
/// 新版系统图片
/// </summary>
//public static TabControl tc;
/// <summary>
/// 当前登陆设备
/// </summary>
public static string EQPCode = "";
/// <summary>
/// 当前登陆工序
/// </summary>
public static string OPCode = "";
/// <summary>
/// 当前登陆资源
/// </summary>
public static string RESCode = "";
#endregion
#region 字符串加解密
/// <summary>
/// MD5加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ToMd5(string str) { return Encrypt(str, "&%#@?,:*_"); } /// <summary>
/// MD5解密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string FromMd5(string str) { return Decrypt(str, "&%#@?,:*_"); } /// <summary>
/// 加密
/// </summary>
/// <param name="strText"></param>
/// <param name="strEncrKey"></param>
/// <returns></returns>
private static String Encrypt(String strText, String strEncrKey) {
Byte[] byKey = { }; Byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; try { byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } catch (Exception ex) { return ex.Message; } }
/// <summary>
/// 解密
/// </summary>
/// <param name="strText"></param>
/// <param name="sDecrKey"></param>
/// <returns></returns>
private static String Decrypt(String strText, String sDecrKey) {
Byte[] byKey = { }; Byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; Byte[] inputByteArray = new byte[strText.Length]; try { byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); inputByteArray = Convert.FromBase64String(strText); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); System.Text.Encoding encoding = System.Text.Encoding.UTF8; return encoding.GetString(ms.ToArray()); } catch (Exception ex) { return ex.Message; } } #endregion
#region 获取服务器时间
public static DateTime GetSeverDateTime(string formatString) { string dateSql = "SELECT getdate()"; return Convert.ToDateTime(Convert.ToDateTime(DBHelper.ExecuteScalar(FrameConnectString, CommandType.Text, dateSql).ToString()).ToString(formatString)); } public static double GetDateDiffForDays(string sDate, string dDate) { string sql = "SELECT DATEDIFF(DAY,'" + sDate + "','" + dDate + "')"; object obj = DBHelper.ExecuteScalar(AppConfig.FrameConnectString, CommandType.Text, sql); return Convert.ToDouble(obj); } #endregion
#region 获取唯一GUID
public static string GetGuid() { return Guid.NewGuid().ToString(); } #endregion
#region WCF基本参数
/// <summary>
/// 基础服务WCF路径
/// </summary>
public static string BaseServiceUri = "";
#endregion
#region 获取本机器信息
/// <summary>
/// 获取本地IP地址
/// </summary>
/// <returns>IP地址</returns>
public static string GetIpAddress() { string ipstr = ""; IPAddress[] arrIPAddresses = Dns.GetHostAddresses(Dns.GetHostName()); foreach (IPAddress ip in arrIPAddresses) { if (ip.AddressFamily.Equals(AddressFamily.InterNetwork)) { ipstr = ip.ToString(); } } return ipstr; } public static string GetComputerName() { string ip = GetIpAddress(); IPHostEntry hostInfo = Dns.GetHostByAddress(ip); return hostInfo.HostName; } public static string GetHostName() { return Dns.GetHostName(); } #endregion
#region 判断是否是端口格式
/// <summary>
/// 判断是否是端口号
/// </summary>
/// <param name="port"></param>
/// <returns></returns>
public static bool CheckIsPort(string port) { bool isPort = false; int portNum; isPort = Int32.TryParse(port, out portNum); if (isPort && portNum >= 0 && portNum <= 65535) { isPort = true; } else { isPort = false; } return isPort; } #endregion
#region 测试连接符是否能够连接
/// <summary>
/// 测试连接符是否成功
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool CheckDbConnectionState(string str) { bool flag = false; try { using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); if (conn.State == ConnectionState.Open) { flag = true; } else { flag = false; } } } catch { flag = false; } return flag; } #endregion
#region 反射窗体
//通用窗体入口
public struct ChildWinManagement { public static string WinCaption(string r) { return r; } //public static bool ExistWin(Form MDIwin, string caption) { bool R = false; foreach (Form f in MDIwin.MdiChildren) { if (f.Name + f.Text == caption) { R = true; f.Show(); f.Activate(); break; } } return R; }
} //系统入口方法
//public static void CreateFormShow(string MDll, string MCode, string MName, string MForm, bool IsShowDialog, Form MainForm, string FormKeyValue, bool maxFlag)
//{
// try
// {
// bool canEnterFlag = GetUserExcuteRight(MCode, "see");
// if (canEnterFlag == false)
// {
// MessageBox.Show("对不起,您无权限使用该功能!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// return;
// }
// Form f = new Form();
// string typeName = MDll + "." + MForm;
// Assembly assembly = Assembly.LoadFrom(Application.StartupPath + @"\" + MDll + ".dll");
// // 实例化窗体
// Type t = assembly.GetType(typeName);
// if (!string.IsNullOrEmpty(FormKeyValue))
// {
// FormKeyValue = FormKeyValue.Substring(0, FormKeyValue.Length - 1);
// object[] strs = FormKeyValue.Split(',');
// f = Activator.CreateInstance(t, strs) as Form;
// }
// else
// {
// f = Activator.CreateInstance(t) as Form;
// }
// f.Name = MForm;
// f.Tag = MCode;
// if (MainForm == null)
// {
// f.Text = MName;
// f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
// f.Text = MName;
// f.Tag = MCode;
// f.ShowDialog();
// }
// else
// {
// if (!ChildWinManagement.ExistWin(MainForm, f.Name + MName))
// {
// if (IsShowDialog == false)
// {
// f.MdiParent = MainForm;
// f.WindowState = FormWindowState.Maximized;
// f.Text = MName;
// f.Tag = MCode;
// f.Show();
// }
// else
// {
// f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
// f.Text = MName;
// f.Tag = MCode;
// f.ShowDialog();
// }
// }
// }
// }
// catch (Exception ex)
// {
// throw ex;
// }
//}
//系统入口方法
//public static void CloseFormShow(string MName)
//{
// try
// {
// if (tc != null)
// {
// foreach (TabPage tab in tc.TabPages)
// {
// if (tab.Text == MName)
// {
// tc.TabPages.Remove(tab);
// tc.Refresh();
// }
// }
// }
// }
// catch (Exception ex)
// {
// throw ex;
// }
//}
#endregion
#region DataTable分页
/**/ /// <summary>
/// 根据索引和pagesize返回记录
/// </summary>
/// <param name="dt">记录集 DataTable</param>
/// <param name="PageIndex">当前页</param>
/// <param name="pagesize">一页的记录数</param>
/// <returns></returns>
public static DataTable GetPageData(DataTable dt, int PageIndex, int PageSize) {
if (PageIndex == 0) return dt; DataTable newdt = dt.Clone(); //newdt.Clear();
int rowbegin = (PageIndex - 1) * PageSize; int rowend = PageIndex * PageSize;
if (rowbegin >= dt.Rows.Count) return newdt;
if (rowend > dt.Rows.Count) rowend = dt.Rows.Count; for (int i = rowbegin; i <= rowend - 1; i++) { DataRow newdr = newdt.NewRow(); DataRow dr = dt.Rows[i]; foreach (DataColumn column in dt.Columns) { newdr[column.ColumnName] = dr[column.ColumnName]; } newdt.Rows.Add(newdr); }
return newdt; } #endregion
#region 获取数据源连接符
/// <summary>
/// 数据源ID(GUID)
/// </summary>
/// <param name="dbId"></param>
/// <returns></returns>
public static string GetDataBaseConnectString(string dbId) { string retString = "";
string sql = @"SELECT DBSourceName ,
DBIpAddress , DBName , DBUser , DBPwd FROM dbo.Sys_DataBase WHERE WorkCode = '{0}' AND ID = '{1}'";
sql = string.Format(sql, AppConfig.WorkPointCode, dbId); DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, sql).Tables[0]; if (data.Rows.Count == 0) { retString = ""; } else { string foramtString = "Data Source={0};Database={1};Uid={2};Pwd={3};"; string dbIpAddress = data.Rows[0]["DBIpAddress"].ToString(); string dbName = data.Rows[0]["DBName"].ToString(); string dbUser = data.Rows[0]["DBUser"].ToString(); string dbPwd = data.Rows[0]["DBPwd"].ToString(); retString = string.Format(foramtString, new object[] { dbIpAddress, dbName, dbUser, AppConfig.FromMd5(dbPwd) }); }
return retString;
} #endregion
#region 权限判断
/// <summary>
/// 窗体按钮权限
/// </summary>
/// <param name="menuCode">窗体TAG值</param>
/// <param name="btnName">按钮名称</param>
/// <returns>false or true</returns>
public static bool GetUserExcuteRight(string menuCode, string btnName) { try { string sql = @"DECLARE @Count INT
SET @Count = 0 SELECT @Count = COUNT(*) FROM dbo.Sys_UserPower a WITH ( NOLOCK ) LEFT JOIN dbo.Sys_MenuAction b ON a.ActionId = b.ID WHERE UserId = '{0}' AND b.WorkPointCode = '{1}' AND b.MenuCode = '{2}' AND b.BtnName = '{3}' DECLARE @Count1 INT SET @Count1 = 0 SELECT @Count1 = COUNT(*) FROM dbo.Sys_RolePower a WITH ( NOLOCK ) LEFT JOIN dbo.Sys_MenuAction b WITH ( NOLOCK ) ON a.ActionId = b.ID WHERE a.RoleId IN ( SELECT ISNULL(a.RoleId, 0) FROM dbo.Sys_UserRole a WITH ( NOLOCK ) WHERE a.UserId = '{0}' ) AND b.WorkPointCode = '{1}' AND b.MenuCode = '{2}' AND b.BtnName = '{3}' SELECT @Count + @Count1 ";
sql = string.Format(sql, new object[] { AppConfig.UserId, AppConfig.WorkPointCode, menuCode, btnName }); object obj = DBHelper.ExecuteScalar(AppConfig.FrameConnectString, CommandType.Text, sql); bool flag = false; if (AppConfig.UserCode.ToLower() == "demo") { flag = true; } else { if (AppConfig.AdminFlag == true) { flag = true; } else { flag = (Convert.ToInt32(obj) > 0 ? true : false); } } return flag; } catch { return false; } } #endregion
#region 获取结构ID&&数据源Id
/// <summary>
/// 返回窗体结构ID
/// </summary>
/// <param name="menuCode">tagcode</param>
/// <returns></returns>
public static string GetMenuId(string menuCode) { string sql = "SELECT ID FROM dbo.Sys_Menu WHERE WorkPointCode='{0}' AND MenuCode='{1}'"; sql = string.Format(sql, AppConfig.WorkPointCode, menuCode); object obj = DBHelper.ExecuteScalar(AppConfig.FrameConnectString, CommandType.Text, sql); return obj == null ? "" : obj.ToString(); } /// <summary>
/// 获取数据源ID
/// </summary>
/// <param name="menuCode"></param>
/// <param name="filterbtnNmae"></param>
/// <returns></returns>
public static string GetSourceId(string menuCode, string filterbtnNmae) { string sql = " SELECT ID FROM dbo.Sys_FormDataSource WHERE MenuId='{0}' AND FilterButtonName='{1}'"; sql = string.Format(sql, GetMenuId(menuCode), filterbtnNmae); object obj = DBHelper.ExecuteScalar(AppConfig.FrameConnectString, CommandType.Text, sql); return obj == null ? "" : obj.ToString(); } public static DataSet GetDataSourceDefaultDataSet(string menuCode, string filterbtnName) { string sql = "SELECT SysDataSourceFlag,DbId,SqlTxt FROM dbo.Sys_FormDataSource WHERE MenuId='{0}' AND FilterButtonName='{1}'"; sql = string.Format(sql, GetMenuId(menuCode), filterbtnName); DataSet ds = null; DataRow dr = null; try {
DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, sql).Tables[0]; if (data.Rows.Count > 0) { dr = data.Rows[0]; } if (dr != null) { bool sysFlag = Convert.ToBoolean(dr["SysDataSourceFlag"]); string dbid = dr["DbId"].ToString(); string sqltxt = dr["SqlTxt"].ToString(); string conStr = ""; if (sysFlag == true) { conStr = AppConfig.AppConnectString; } else { conStr = GetDataBaseConnectString(dbid); } ds = DBHelper.ExecuteDataset(conStr, CommandType.Text, sqltxt); } } catch (Exception ex) { ds = null; } return ds; } #endregion
#region EXCEL
public static DataTable GetExcelData(string excelPath, string sheetName) { DataTable dtGBPatient = new DataTable();
string strConn;
//注意:把一个excel文件看做一个数据库,一个sheet看做一张表。语法 "SELECT * FROM [sheet1$]",表单要使用"[]"和"$"
// 1、HDR表示要把第一行作为数据还是作为列名,作为数据用HDR=no,作为列名用HDR=yes;
// 2、通过IMEX=1来把混合型作为文本型读取,避免null值。
strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; string strConnection = string.Format(strConn, excelPath); OleDbConnection conn = new OleDbConnection(strConnection); conn.Open(); OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetName + "$]", strConnection);
dtGBPatient.TableName = "gbPatientInfo"; oada.Fill(dtGBPatient);//获得datatable
conn.Close(); return dtGBPatient;
} //public static string[] GetExcelSheetNames(string filePath)
//{
//Microsoft.Office.Interop.Excel.ApplicationClass
//excelApp
//=
//new
//Microsoft.Office.Interop.Excel.ApplicationClass();
//Microsoft.Office.Interop.Excel.Workbooks
//wbs
//=
//excelApp.Workbooks;
//Microsoft.Office.Interop.Excel.Workbook
//wb
//=
//wbs.Open(filePath,
//Type.Missing, Type.Missing, Type.Missing, Type.Missing,
//Type.Missing,
//Type.Missing,
//Type.Missing,
//Type.Missing,
//Type.Missing, Type.Missing,
//Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//int count = wb.Worksheets.Count;
//string[] names = new string[count];
//for (int i = 1; i <= count; i++)
//{
// names[i - 1]
// =
// ((Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[i]).Name;
//}
//wb.Close(null, null, null);
//excelApp.Quit();
//wbs.Close();
//System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
//System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
//System.Runtime.InteropServices.Marshal.ReleaseComObject(wbs);
//excelApp = null;
//wbs = null;
//wb = null;
//return names;
//}
#endregion
#region 获取单据流水号
/// <summary>
/// 获取单据号
/// </summary>
/// <param name="tbName"></param>
/// <param name="colName"></param>
/// <param name="Pre"></param>
/// <param name="numLen"></param>
/// <returns></returns>
public static string GetBillCode(string tbName, string colName, string Pre, int numLen) { string sql = "EXEC Addins_GetBillCode '{0}','{1}','{2}',{3}"; sql = string.Format(sql, new object[] { tbName, colName, Pre, numLen }); return DBHelper.ExecuteScalar(AppConfig.AppConnectString, CommandType.Text, sql).ToString(); } /// <summary>
/// 获取单据号
/// </summary>
/// <param name="tbName"></param>
/// <param name="colName"></param>
/// <param name="Pre"></param>
/// <param name="numLen"></param>
/// <returns></returns>
public static string GetSerialCode(string connectString, string tbName, string colName, string Pre, int numLen) { string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}',{3}"; sql = string.Format(sql, new object[] { tbName, colName, Pre, numLen }); return DBHelper.ExecuteScalar(connectString, CommandType.Text, sql).ToString(); } #endregion
#region 获取物料批次
/// <summary>
///
/// </summary>
/// <param name="invCode"></param>
/// <returns></returns>
public static string GetMaxNum(string invCode) { string sql = @"DECLARE @Num INT
SET @Num = 0 SELECT @Num = ISNULL(MAX(MAXNUM), 0) FROM dbo.TBLBARCODEBATCH WHERE DATEINDEX = '{0}' AND InvCode = '{1}'
IF @Num = 0 BEGIN INSERT INTO dbo.TBLBARCODEBATCH ( InvCode, DateIndex, MaxNum ) VALUES ( '{1}', '{0}', @Num + 1 ) END ELSE BEGIN UPDATE dbo.TBLBARCODEBATCH SET maxnum=@Num+1 WHERE invcode='{1}' AND dateindex='{0}' END SELECT @Num+1";
string dateIndex = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm").ToString("yyyyMMddHHmm"); sql = string.Format(sql, dateIndex, invCode); object obj = DBHelper.ExecuteScalar(AppConfig.AppConnectString, CommandType.Text, sql); return dateIndex + Convert.ToInt32(obj).ToString("0000"); } #endregion
#region 调用WEBSERVICE
/**/ /// 根据指定的信息,调用远程WebService方法
///
/// WebService的http形式的地址
/// 欲调用的WebService的命名空间
/// 欲调用的WebService的类名(不包括命名空间前缀)
/// 欲调用的WebService的方法名
/// 参数列表
/// WebService的执行结果
///
/// 如果调用失败,将会抛出Exception。请调用的时候,适当截获异常。
/// 异常信息可能会发生在两个地方:
/// 1、动态构造WebService的时候,CompileAssembly失败。
/// 2、WebService本身执行失败。
///
///
///
/// object obj = InvokeWebservice("http://localhost/GSP_WorkflowWebservice/common.asmx","Genersoft.Platform.Service.Workflow","Common","GetToolType",new object[]{"1"});
///
///
//public static object InvokeWebservice(string url, string @namespace, string classname, string methodname, object[] args)
//{
//try
//{
// System.Net.WebClient wc = new System.Net.WebClient();
// System.IO.Stream stream = wc.OpenRead(url + "?WSDL");
// System.Web.Services.Description.ServiceDescription sd = System.Web.Services.Description.ServiceDescription.Read(stream);
// System.Web.Services.Description.ServiceDescriptionImporter sdi = new System.Web.Services.Description.ServiceDescriptionImporter();
// sdi.AddServiceDescription(sd, "", "");
// System.CodeDom.CodeNamespace cn = new System.CodeDom.CodeNamespace(@namespace);
// System.CodeDom.CodeCompileUnit ccu = new System.CodeDom.CodeCompileUnit();
// ccu.Namespaces.Add(cn);
// sdi.Import(cn, ccu);
// Microsoft.CSharp.CSharpCodeProvider csc = new Microsoft.CSharp.CSharpCodeProvider();
// System.CodeDom.Compiler.ICodeCompiler icc = csc.CreateCompiler();
// System.CodeDom.Compiler.CompilerParameters cplist = new System.CodeDom.Compiler.CompilerParameters();
// cplist.GenerateExecutable = false;
// cplist.GenerateInMemory = true;
// cplist.ReferencedAssemblies.Add("System.dll");
// cplist.ReferencedAssemblies.Add("System.XML.dll");
// cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
// cplist.ReferencedAssemblies.Add("System.Data.dll");
// System.CodeDom.Compiler.CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
// if (true == cr.Errors.HasErrors)
// {
// System.Text.StringBuilder sb = new System.Text.StringBuilder();
// foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
// {
// sb.Append(ce.ToString());
// sb.Append(System.Environment.NewLine);
// }
// throw new Exception(sb.ToString());
// }
// System.Reflection.Assembly assembly = cr.CompiledAssembly;
// Type t = assembly.GetType(@namespace + "." + classname, true, true);
// object obj = Activator.CreateInstance(t);
// System.Reflection.MethodInfo mi = t.GetMethod(methodname);
// return mi.Invoke(obj, args);
//}
//catch (Exception ex)
//{
// throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
//}
//}
#endregion
#region 默认站点采集点
public static string DefaultLine = ""; public static string DefaultRes = ""; #endregion
#region 获取连接符中的数据库名称
public static string GetDataBaseNameByConnectString(string connectString) { Dictionary<string, string> dictionary = connectString.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToDictionary(x => x.Split('=')[0], x => x.Split('=')[1]); string erpDataBase = dictionary["Database"]; return erpDataBase; } #endregion
#region 获取打印次数
/// <summary>
/// 返回打印次数
/// </summary>
/// <param name="printTableName">打印的表名称</param>
/// <param name="printKey">打印KEY值</param>
/// <returns></returns>
public static int GetPrintNum(string printTableName, string printKey) { string sql = " SELECT dbo.ZHC_GetPrintCount('{0}','{1}','{2}')"; sql = string.Format(sql, AppConfig.WorkPointCode, printTableName, printKey); object obj = DBHelper.ExecuteScalar(AppConfig.FrameConnectString, CommandType.Text, sql); return Convert.ToInt32(obj); }
#endregion
public static Dictionary<string, string> GetDataBaseNames() {
Dictionary<string, string> retDic = new Dictionary<string, string>(); string sql = @"SELECT '[DB.'+DBSourceName+']' AS [Key],DBSourceName,DBIpAddress,DBName,DBUser,DBPwd
FROM dbo.Sys_DataBase";
DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, sql).Tables[0]; foreach (DataRow dr in data.Rows) { string key = dr["Key"].ToString(); if (!retDic.ContainsKey(key)) {
retDic.Add(key, dr["DBName"].ToString()); }
} return retDic;
} /// <summary>
/// 比如您设置设置的数据源名为ERP 那么您的key 就是[DB.ERP]
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetDataBaseConnectStringByKey(string key) { Dictionary<string, string> DIC = GetDataBaseConnectString(); if (DIC.ContainsKey(key)) { return DIC[key]; } else { return ""; }
} private static Dictionary<string, string> GetDataBaseConnectString() { Dictionary<string, string> retDic = new Dictionary<string, string>(); string sql = @"SELECT '[DB.'+DBSourceName+']' AS [Key],DBSourceName,DBIpAddress,DBName,DBUser,DBPwd
FROM dbo.Sys_DataBase where WorkCode='{0}'";
sql = string.Format(sql, AppConfig.WorkPointCode); DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, sql).Tables[0]; foreach (DataRow dr in data.Rows) { string key = dr["Key"].ToString(); string foramtString = "Data Source={0};Database={1};Uid={2};Pwd={3};"; if (!retDic.ContainsKey(key)) { string pwd = dr["DBPwd"].ToString(); pwd = FromMd5(pwd); string dsql = string.Format(foramtString, new object[] { dr["DBIpAddress"], dr["DBName"], dr["DBUser"], pwd }); retDic.Add(key, dsql); }
} return retDic;
}
public static DBLinkClass GetDataBaseClass(string key) { try { Dictionary<string, string> retDic = new Dictionary<string, string>(); string sql = @"SELECT '[DB.'+DBSourceName+']' AS [Key],DBSourceName,DBIpAddress,DBName,DBUser,DBPwd
FROM dbo.Sys_DataBase where WorkCode='{0}'";
sql = string.Format(sql, AppConfig.WorkPointCode); DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, sql).Tables[0]; foreach (DataRow dr in data.Rows) { if (key == dr["Key"].ToString()) { DBLinkClass item = new DBLinkClass();
string pwd = dr["DBPwd"].ToString(); pwd = FromMd5(pwd); item.DBIpAddress = dr["DBIpAddress"].ToString(); item.DBName = dr["DBName"].ToString(); item.DBUser = dr["DBUser"].ToString(); item.DBPwd = pwd; return item;
} } return null; } catch (Exception ex) { return null; }
} #region 分页
public static DataTable GetPageDataByDb(string tablename, string pkey, int pagesize, int pageindex, int rowcount) { string sql = "EXEC Proc_GetPage '{0}','{1}','',{2},{3},'{1}',0,'*',{4}"; sql = string.Format(sql, tablename, pkey, pagesize, pageindex, rowcount); DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, sql).Tables[0]; return data; } public static void DropTemTable(string tempTableName) { if (!string.IsNullOrEmpty(tempTableName)) { string dropSql = @"IF EXISTS ( SELECT *
FROM dbo.SysObjects WHERE ID = OBJECT_ID(N'[" + tempTableName + "]') ) BEGIN drop table " + tempTableName + " END";
DBHelper.ExecuteNonQuery(AppConfig.FrameConnectString, CommandType.Text, dropSql); } } /// <summary>
/// 创建临时表
/// </summary>
/// <param name="data"></param>
public static string InsertTempTable(DataTable data, string _tempTableName) { try {
if (_tempTableName != "") { string dropSql = @"IF EXISTS ( SELECT *
FROM dbo.SysObjects WHERE ID = OBJECT_ID(N'[" + _tempTableName + "]') ) BEGIN drop table " + _tempTableName + " END";
DBHelper.ExecuteNonQuery(AppConfig.FrameConnectString, CommandType.Text, dropSql); }
_tempTableName = "TEMP_" + AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss").ToString("yyyyMMddHHmmss") + "_" + Guid.NewGuid().ToString().Replace("-", ""); string sql = @"IF not EXISTS ( SELECT * FROM dbo.SysObjects WHERE ID = OBJECT_ID(N'[" + _tempTableName + "]') ) BEGIN CREATE TABLE " + _tempTableName + "("; foreach (DataColumn dc in data.Columns) { if (dc.ColumnName.ToLower() == "pagerowindex") { string filedCol = dc.ColumnName + " int IDENTITY(1,1) PRIMARY KEY,"; sql += filedCol;
} else { if (dc.DataType == typeof(int)) { string filedCol = dc.ColumnName + " int,"; sql += filedCol; } else if (dc.DataType == typeof(decimal)) { string filedCol = dc.ColumnName + " decimal(18,6),"; sql += filedCol; } else if (dc.DataType == typeof(double)) { string filedCol = dc.ColumnName + " float,"; sql += filedCol; } else if (dc.DataType == typeof(DateTime)) { string filedCol = dc.ColumnName + " datetime,"; sql += filedCol; } else if (dc.DataType == typeof(string)) { string filedCol = dc.ColumnName + " nvarchar(2000),"; sql += filedCol; } else if (dc.DataType == typeof(bool)) { string filedCol = dc.ColumnName + " bit,"; sql += filedCol; } else { string filedCol = dc.ColumnName + " nvarchar(2000),"; sql += filedCol; }
}
} sql = sql.Substring(0, sql.Length - 1) + ") END"; DBHelper.ExecuteNonQuery(AppConfig.FrameConnectString, CommandType.Text, sql); return _tempTableName; } catch (Exception ex) { throw ex; }
} #endregion
}
public class DBLinkClass { public string DBIpAddress { get; set; } public string DBName { get; set; } public string DBUser { get; set; } public string DBPwd { get; set; }
}
} }
|