public static String GetDecrptyString(Property property, DataRow Row, string PreName = null) { var encypt = new EncryptionClass(); encypt.IV = Row[PreName + property.DBName + IVStr] as byte[]; encypt.IvIndex = Row[PreName + property.DBName + IVIndexStr] as byte[]; encypt.EncrKey = Row[PreName + property.DBName + ENStr] as byte[]; encypt.EnIndex = Row[PreName + property.DBName + ENIndexStr] as byte[]; encypt.EncryString = Row[PreName + property.DBName + PwdStr].ToString(); return(encypt.Decrypt()); }
public static Dictionary <string, object> GetEncryptionValus(Property property, object ob) { Dictionary <string, object> result = new Dictionary <string, object>(); var encypt = new EncryptionClass((ob ?? "").ToString()); result.Add(property.DBName + IVStr, encypt.IV); result.Add(property.DBName + IVIndexStr, encypt.IvIndex); result.Add(property.DBName + ENStr, encypt.EncrKey); result.Add(property.DBName + ENIndexStr, encypt.EnIndex); result.Add(property.DBName + PwdStr, encypt.EncryString); return(result); }
private bool Query() { string orderby = ""; List <String> select = new List <string>(); string querySql = ""; var tableSql = ""; System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(); command.Connection = new System.Data.SqlClient.SqlConnection(SqlHelper.GetSqlCon(this.Con, this.ListView.Model).ToString()); command.Connection.Open(); querySql = "SELECT "; tableSql = this.ListView.Model.DataTableName; List <String> keys = new List <string>(); foreach (var selectedItem in this.ListView.Items) { if (select.Contains(selectedItem.Name)) { continue; } else { select.Add(selectedItem.Name); } if (selectedItem.Property.PropertyType != PropertyType.BusinessObject) { if (string.IsNullOrEmpty(selectedItem.Property.DBName) == false) { if (selectedItem.Property.PropertyType != PropertyType.RadomDECS) { querySql += string.Format("[{0}].[{1}] as [{0}_{1}],", this.ListView.Model.DataTableName, selectedItem.Property.DBName); if (this.QueryContext.OderByItem == selectedItem) { orderby = string.Format("[{0}].[{1}]", this.ListView.Model.DataTableName, selectedItem.Property.DBName); } } else { var cols = EncryptionClass.GetPropertyCols(selectedItem.Property); foreach (var col in cols) { querySql += string.Format("[{0}].[{1}] as [{0}_{1}],", this.ListView.Model.DataTableName, col); } } } } else if (selectedItem.Property.IsMultiMap) { //如果为多重映射 foreach (var db in selectedItem.Property.DBMaps) { querySql += string.Format("[{0}].[{1}] as [{2}_{3}],", this.ListView.Model.DataTableName, db.DBColName, selectedItem.Property.Name, db.PropertyName); } if (this.QueryContext.OderByItem == selectedItem && selectedItem.Property.Model.ShowProperty != null && selectedItem.Property.DBMaps.Count(p => p.PropertyName == selectedItem.Property.Model.ShowProperty.Name) > 0) { orderby = string.Format("[{0}].[{1}]", this.ListView.Model.DataTableName, selectedItem.Property.DBMaps.First(p => p.PropertyName == selectedItem.Property.Model.ShowProperty.Name).DBColName);// , } } else { //不为多重映射 if (selectedItem.Property.Model.IdProperty != null && selectedItem.Property.Model.IdProperty == selectedItem.Property.Model.ShowProperty) { //这里还没有搞定 //主键就是要显示的值 ,直接忽略 querySql += string.Format("[{0}].[{1}] as [{2}_{3}],", this.ListView.Model.DataTableName, selectedItem.Property.DBName, selectedItem.Property.Name, selectedItem.Property.Model.ShowProperty.DBName); if (selectedItem == this.QueryContext.OderByItem) { orderby = string.Format("[{0}].[{1}]", this.ListView.Model.DataTableName, selectedItem.Property.DBName); } } else { //主健不是要显示的值,联查 querySql += string.Format("[{0}].[{1}] as [{0}_{1}],", selectedItem.Property.Name, SqlHelper.GetKeyCol(selectedItem.Property.Model)); querySql += string.Format("[{0}].[{1}] as [{0}_{1}],", selectedItem.Property.Name, selectedItem.Property.Model.ShowProperty.DBName); tableSql += string.Format(" left outer JOIN [{0}] as [{1}] ON {1}.{2}={3}.{4} ", selectedItem.Property.Model.DataTableName, selectedItem.Property.Name, SqlHelper.GetKeyCol(selectedItem.Property.Model), this.ListView.Model.DataTableName, selectedItem.Property.DBName ); if (this.QueryContext.OderByItem == selectedItem) { orderby = string.Format("[{0}].[{1}]", selectedItem.Property.Name, selectedItem.Property.Model.ShowProperty.DBName); } } } } if ((ListView.Model.IdProperty != null && ListView.Items.Count(p => p.Property.Name == ListView.Model.IdProperty.Name) == 0) || ListView.Model.AutoSysId == true) { querySql += string.Format("[{0}].[{1}] as [{0}_{1}],", ListView.Model.DataTableName, SqlHelper.GetKeyCol(this.ListView.Model)); } // string orderby = ""; if (this.QueryContext.OderByItem != null) { //if (QueryContext.OderByItem.Property.PropertyType == PropertyType.BusinessObject) // orderby = string.Format("[{0}].[{1}]", // QueryContext.OderByItem.Property.Name, // QueryContext.OderByItem.Property.Model.ShowProperty.DBName); //else // orderby = string.Format("[{0}].[{1}]", // this.ListView.Model.DataTableName, QueryContext.OderByItem.Property.DBName); } else { orderby = string.Format("[{0}].[{1}]", this.ListView.Model.DataTableName, SqlHelper.GetKeyCol(this.ListView.Model)); } querySql += "ROW_NUMBER() OVER(ORDER BY " + orderby + " " + this.QueryContext.OrderByType.ToString() + ") AS [QUERY_ROW_INDEX],"; querySql = querySql.Substring(0, querySql.Length - 1); querySql += " FROM " + tableSql; string viewfiler = this.ListView.Filter; if (string.IsNullOrEmpty(viewfiler)) { viewfiler = "1=1"; } querySql += " WHERE " + viewfiler; if (String.IsNullOrEmpty(this.QueryContext.Filter) == false) { var items = this.ListView.Items.Where(p => p.ReadOnly); if (items.Count() > 0) { querySql += " AND ("; foreach (var item in this.ListView.Items.Where(p => p.ReadOnly)) { if (item.Property.PropertyType == PropertyType.BusinessObject) { if (item.Property.Model.ShowProperty != null) { if (item.Property.Model.ShowProperty != item.Property.Model.IdProperty) {// querySql += string.Format("{0} LIKE '%'+@P1+'%' OR ", // item.Property.Name + "." + item.Property.Model.ShowProperty.DBName); if (item.Property.Model.ShowProperty != null) { if (item.Property.IsMultiMap == false) { querySql += string.Format("{0} LIKE '%'+@P1+'%' OR ", item.Property.Name + "." + item.Property.Model.ShowProperty.DBName); } else if (item.Property.DBMaps.Count(p => p.PropertyName == item .Property.Model.ShowProperty.Name) > 0) { querySql += string.Format("{0} LIKE '%'+@P1+'%' OR ", item.Property.Name + "." + item.Property.DBMaps.First(p => p.PropertyName == item.Property.Name).DBColName); } } } else { if (item.Property.IsMultiMap == false) { querySql += string.Format("[{0}].[{1}] LIKE '%'+@P1+'%' OR ", this.ListView.Model.DataTableName, item.Property.DBName); } else if (item.Property.DBMaps.Count(p => p.PropertyName == item .Property.Model.ShowProperty.Name) > 0) { querySql += string.Format("{0} LIKE '%'+@P1+'%' OR ", this.ListView.Model.DataTableName + "." + item.Property.DBMaps.First(p => p.PropertyName == item.Property.Model.ShowProperty.Name).DBColName); } } } } else { querySql += string.Format("{0} LIKE '%'+@P1+'%' OR ", this.ListView.Model.DataTableName + "." + item.Property.DBName); } } querySql += " 1=2)"; command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@P1", this.QueryContext.Filter)); } } /////// System.Diagnostics.Trace.WriteLine(querySql); command.CommandText = "SELECT COUNT (*) FROM (" + querySql + ")T"; this.TotalRecord = (int)command.ExecuteScalar(); if (this.CurrentIndex > this.TotalRecord) { return(false); } command.CommandText = "SELECT " + string.Format("[{0}_{1}] ", ListView.Model.DataTableName, SqlHelper.GetKeyCol(this.ListView.Model)) + " FROM (" + querySql + ")T WHERE QUERY_ROW_INDEX ='" + this.CurrentIndex.ToString() + "'"; var id = command.ExecuteScalar(); /////// System.Diagnostics.Trace.WriteLine(String.Format(" Item ID:{0}", id)); this.Current = new dbContext(SqlHelper.GetSqlCon(this.Con, this.ListView.Model), this.ConFac).GetDetail (this.ListView.Model, id); return(true); }