如何将查询结果生成DataTable并返回赋值
来源:互联网 发布:淘宝店铺的仓库在哪里 编辑:程序博客网 时间:2024/06/07 17:10
public static List<MetricNodes> GetRootNodes_OneView2(string userName, string userDomain) { DataTable dt; string strSql = "SELECT COUNT(1) FROM TopLevelMetricsForUser WHERE UserName = '" + userName + "' AND Type ='U'"; int cnt = DbConnector.GenerateScalar_Int(strSql); if (cnt > 0) { //user selection strSql = string.Format(@"SELECT DISTINCT MN.NodeId,MN.Operation,MN.MetricId,NULL As ParentId,M.parameterId,M.MetricName,M.StatusId,M.HostName,M.value,M.unit,CASE WHEN M.HighLevel IS NULL THEN 0 ELSE M.HighLevel END As HighLevel, (select count(1) from MetricNodes where NodePath.GetAncestor(1)=MN.NodePath) As HighLevelChildren,MN.ParentNodeId, CASE WHEN T.MetricId IS NULL THEN 'UnChecked' ELSE 'Checked' END As Checked ,NodePath.GetLevel() as level, (select count(1) from MetricNodeRelations where SourceNodeId=MN.NodeId) as hasRelation FROM MetricNodes MN,Metrics M,TopLevelMetricsForUser T WHERE M.MetricId = MN.MetricId AND M.MetricId = T.MetricId AND T.UserName = '{0}' AND T.Type ='U' AND MN.MetricId NOT IN ( SELECT MetricId From FilteredMetrics F, UserDomains U WHERE U.UserDomain In ('{1}') AND F.UserDomainId = U.UserDomainId )", userName, userDomain.Replace(",", "','")); dt = DbConnector.GenerateDataTable(strSql); } else { strSql = "SELECT COUNT(*) FROM TopLevelMetricsForUser WHERE UserName = '" + userName + "' AND Type ='A'"; cnt = DbConnector.GenerateScalar_Int(strSql); if (cnt > 0) { //admin setting for a user strSql = string.Format(@"SELECT DISTINCT MN.NodeId,MN.Operation,MN.MetricId,NULL As ParentId,M.parameterId,M.MetricName,M.StatusId,M.HostName,M.value,M.unit,CASE WHEN M.HighLevel IS NULL THEN 0 ELSE M.HighLevel END As HighLevel, (select count(1) from MetricNodes where NodePath.GetAncestor(1)=MN.NodePath) As HighLevelChildren,MN.ParentNodeId, CASE WHEN T.MetricId IS NULL THEN 'UnChecked' ELSE 'Checked' END As Checked,NodePath.GetLevel() as level, (select count(1) from MetricNodeRelations where SourceNodeId=MN.NodeId) as hasRelation FROM MetricNodes MN,Metrics M,TopLevelMetricsForUser T WHERE M.MetricId = MN.MetricId AND M.MetricId = T.MetricId AND T.UserName = '{0}' AND T.Type ='A' AND MN.MetricId NOT IN ( SELECT MetricId From FilteredMetrics F, UserDomains U WHERE U.UserDomain In ('{1}') AND F.UserDomainId = U.UserDomainId )", userName, userDomain.Replace(",", "','")); dt = DbConnector.GenerateDataTable(strSql); } else { strSql = string.Format(@"SELECT DISTINCT MN.NodeId,MN.Operation,MN.MetricId, NULL AS ParentId,M.parameterId ,M.MetricName,M.StatusId,M.HostName,M.value,M.unit,CASE WHEN M.HighLevel IS NULL THEN 0 ELSE M.HighLevel END As HighLevel, (select count(1) from MetricNodes where NodePath.GetAncestor(1)=MN.NodePath) As HighLevelChildren,MN.ParentNodeId, CASE WHEN T.MetricId IS NULL THEN 'UnChecked' ELSE 'Checked' END As Checked ,NodePath.GetLevel() as level, (select count(1) from MetricNodeRelations where SourceNodeId=MN.NodeId) as hasRelation FROM MetricNodes MN,Metrics M LEFT JOIN TopLevelMetricsForUserDomain T on M.MetricId = T.MetricId JOIN UserDomains U ON T.UserDomainId = U.UserDomainId AND U.UserDomain IN ('{0}') WHERE M.metricid=MN.MetricId AND M.MetricId NOT IN (SELECT MetricId From FilteredMetrics Where UserDomainId = U.UserDomainId)", userDomain.Replace(",", "','")); dt = DbConnector.GenerateDataTable(strSql); } } var resultList = new List<MetricNodes>(); foreach (DataRow row in dt.Rows) { resultList.Add(new MetricNodes { MetricId = Convert.ToInt32(row["MetricId"]), HasChildren = Convert.ToInt32(row["HighLevelChildren"]), HighLevelChildren = Convert.ToInt32(row["HighLevelChildren"]), HighLevel = row["HighLevel"] == DBNull.Value ? null : (bool?)Convert.ToBoolean(row["HighLevel"]), MetricName = Convert.ToString(row["MetricName"]), HostName = Convert.ToString(row["HostName"]), UserDomain = userDomain, StatusId = row["StatusId"] == DBNull.Value ? null : (int?)row["StatusId"], NodeId = row["NodeId"] == DBNull.Value ? 0 : Convert.ToInt32(row["NodeId"]), ParentNodeId = row["ParentNodeId"] == DBNull.Value ? 0 : Convert.ToInt32(row["ParentNodeId"]), Value = row["value"] == DBNull.Value ? (double?)null : Convert.ToDouble(row["value"]), Unit = row["unit"] == DBNull.Value ? "" : Convert.ToString(row["unit"]), Level = row["level"] == DBNull.Value ? 0 : Convert.ToInt32(row["level"]), HasRelation = row["hasRelation"] == DBNull.Value ? 0 : Convert.ToInt32(row["hasRelation"]), Operation = row["Operation"] != DBNull.Value && Convert.ToBoolean(row["Operation"]), ParameterId = row["parameterId"] == DBNull.Value ? null : Convert.ToString(row["parameterId"]) }); } if (dt.Rows.Count == 1) { var childlist = GetChildNodes_OneView2(Convert.ToInt32(dt.Rows[0]["NodeId"]), userDomain); resultList = resultList.Union(childlist).ToList(); } return resultList; }
dbconnect方法
public static DataTable GenerateDataTable(string query) { if (connStr == "") loadConnStrings(); //for timebomb tp SqlConnection conn = new SqlConnection(connStr); DataTable dt = GenerateDataTable(query, conn); try { if (conn.State != ConnectionState.Closed) { conn.Close(); } } catch (SqlException sqle) { throw (sqle); } return dt; }
This method generates DataTable using an existing connection
/// <summary> /// This method generates DataTable using an existing connection /// </summary> /// <param name="query">a sql query statement</param> /// <returns>DataTale</returns> public static DataTable GenerateDataTable(string query, SqlConnection conn) { DataTable dt; try { if (conn != null && conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken) conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter(query, conn); adapter.SelectCommand.CommandTimeout = 200; dt = new DataTable(); adapter.Fill(dt); adapter.Dispose(); if (conn.State != ConnectionState.Closed) { conn.Close(); } } catch (SqlException sqle) { throw (sqle); } return dt; }
- 如何将查询结果生成DataTable并返回赋值
- 如何将数据添加到自定义的DataTable中并赋值给list实现打印功能。
- 如何将linq查询的结果 转换为DataTable,最简单的实现方法
- 用linq对datatable进行分组查询并返回datatable
- 用linq对datatable分组查询并返回datatable
- 使用linq机制 实现datatable连表查询 结果赋值到一个新的datatable
- 将普通sql查询的将结果集转换指定的对象,然后对象存在list中并返回
- 如何使用临时表将2个查询结果并在一起
- datatable 增加一行并赋值
- 将SQL查询结果以字符串形式返回
- Hibernate查询指定字段并返回对象的结果集
- oracle 动态拼接语句并返回查询结果集
- 利用C#查询Excel,并以Dataset返回结果
- python 模拟查询请求并处理返回结果
- 如何定义DATATABLE,同时赋值
- 多条件查询DataTable返回DataTable
- oracle 将查询结果创建表并插入
- Java如何获取所查询的结果集的列数,并将每条记录打印出来
- TDD核心要点(TDD1)
- java Date 获取日期字符串可能出现的问题
- 用Aspose.Words for .NET动态生成word文档中的数据表格
- 简明 Vim 练级攻略
- utf8转gb2312
- 如何将查询结果生成DataTable并返回赋值
- 小型软件企业实施CMMI过程改进研究和分析
- HttpClient使用基础
- java RMI
- 我思故我在系列—数据结构面试14题(题目搜集整理者JULY,非常感谢!!)
- 设置/美化SecureCRT让其更加适合自己
- C++里面的重写带有默认参数的虚函数的问题
- 一份非常内行的Linux LVM HOWTO
- 浅谈C中的malloc和free