C++ 从数据库读取数据,将数据显示在界面上的TreeCtrl上

oracle数据库读取数据如下所示:

代码如下:

//构造节点
struct AREA
{
   long id;
   long parent_area_id;
   string area_name;
     std::vector<AREA> children;
}

//从AREA表中根据id读一个结构体Area的数据
void Id2FindAreaTree(Session ses, AREA& Area, int id)
{
   Statement select(ses);
   select << "SELECT id, parent_area_id,area_name FROM AREA where id =:pid", into(Area.id), into(Area.parent_area_id), into(Area.area_name), use(id), now;
}
//从AREA表中读取树形数据
void Parent_id2FindAreaTree(Session ses, std::vector<AREA>& vArea, int parent_id)
{
    vArea.clear();
    typedef Poco::Tuple<long, long, string> Area;
    typedef std::vector<Area> Are;
    Are ar;
    Statement select(ses);
    select << "SELECT id, parent_area_id,area_name FROM AREA where parent_area_id =:pid", into(ar), use(parent_id), now;
    Are::const_iterator it = ar.begin();
    for (; it != ar.end(); ++it)
    {
       AREA area;
       area.id = it->get<0>();
       area.parent_area_id = it->get<1>();
       area.area_name = it->get<2>();
       vArea.push_back(area);
    }
}
</span><pre name="code" class="cpp"><span style="font-size:14px;">//构建树结构(入口函数)    Session 是POCO库中连接oracle的工具
void CDlg::CreateTreeCtrl(Session ses, long id, AREA& area, HTREEITEM hItem)
{
		Id2FindAreaTree(ses, area, id);
		HTREEITEM  hCurrItem = m_tree.InsertItem(area.area_name.c_str(), 0, 0, hItem, TVI_LAST);
		std::vector<AREA> temp;
		 Parent_id2FindAreaTree(ses, temp, id);
 		std::vector<AREA>::iterator it;
 		for (it = temp.begin(); it != temp.end(); it++)
		{
			AREA a;
			 CreateTreeCtrl(ses, it->id, a, hCurrItem);
  			if (!a.area_name.empty())
 			{
				 area.children.push_back(a);
			 }
 		}
}</span>

//最后,在初始化函数中,调用入口函数
AREA area;
try {
     ODBC::Connector::registerConnector();
     Session ses("ODBC", "UID=用户名;PWD=密码;DATABASE=数据库名;dsn=配置好的dsn");

     CreateTreeCtrl(ses, 1, area, 0);

     ODBC::Connector::unregisterConnector();
   }
   catch (ConnectionFailedException e)
   {
   }

结果如下图:

运行,大功告成了!觉得有用的朋友,记得点赞哦~


时间: 2024-10-25 19:03:37

C++ 从数据库读取数据,将数据显示在界面上的TreeCtrl上的相关文章

jquery.datatable插件从数据库读取数据

一.分页 分页的基本思想是根据datatable的页码及每页显示的行数,将数据从数据库分段提出,然后再填充到表格中,以达到分页的效果. 这里需要用到datatable插件的几个属性: "sEcho":这个属性需要原封不动地传回给datatable,具体的作用我也不清楚,但是根据它值的变化情况来看,好像是一个操作次数的计数(之前我一直把它当做是pageindex来用,结果发现,不论我在datatable中是翻下一页还是翻上一页,它一直在增加.) "iDisplayStart&q

echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小demo的效果图如下:(很熟悉,有没有) 2.按照echarts的使用方法新建一个echarts.html文件.为ECharts准备一个具备大小(宽高)的Dom(讲的有点细,熟悉的朋友直接跳过) <!DOCTYPE html> <head> <meta charset="u

10天学会phpWeChat——第三天:从数据库读取数据到视图

在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从MySql读取并通过视图多样化的呈现给用户. 今天我们进入<10天学会phpWeChat>系列教程的第三天:从数据库读取数据到视图. 一.首先,我们创建一个MySql数据文章表(pw_wechat_hello_article)用来存储要显示给用户的数据. 为了简单明了,这个表我们只保留3个字段: I

C#实现从数据库读取数据到Excel

用第三方组件:NPOI来实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写. 创建一个实体类: [Table("Customer") ] public class Customer { [Key] public int Id { get; set; } public st

从数据库读取数据Table后转成对应的实体泛型方法

1 每次读取数据库的数据都是一个DataTable表,以前是傻傻的每个表都写一个转换的类,后来自己研究一个泛型方法,适用于所有转换 /// <summary> /// 返回一个集合 /// </summary> /// <typeparam name="T2">要传入的实体</typeparam> /// <param name="strSql">sql语句或者存储过程类型</param> //

Hibernate上传数据到数据库,从数据库读取数据到本地模板代码

Hibernate上传数据到数据库: 1 //创建一个session对象 2 Session session1=HibernateTools.getSession(); 3 //Fenciresult数据库表所对应的实体类,生成实体类对象,操作数据库表 4 Fenciresult fenciresult=new Fenciresult(); 5 //设置数据库对应字段的值,主键若是自增模式,无需人为设置 6 fenciresult.setWord("@"); 7 fenciresult

pandas从数据库读取数据

因为本周有一个是需要使用pandos做一个数据分析的需求,所以在这里做一下记录. Python中用Pandas进行数据分析,最常用的就是Dataframe数据结构, 这里我们主要介绍Pandas如何读取数据到Dataframe. Pandas读取Mysql数据要读取Mysql中的数据,首先要安装Mysqldb包.假设我数据库安装在本地,用户名位myusername,密码为mypassword,要读取mydb数据库中的数据,那么对应的代码如下: import pandas as pd import

知乎网页(用php从数据库读取数据)

---恢复内容开始--- 这几天都在做小项目,做的是知乎的网页,我觉得知乎网页最难的地方就在数据的读取,可以用json.js;也可以用php数据库来获取数据,下面是我写的一些用php读取数据库数据的代码,首先首页主要内容的读取,两个部分conn.php和zhihu_exec.php;注册有三部分conn.php,zhuce_add.php,zhuce.insert.php;登录有两个部分login.php,login.exec.php; 下面是具体的代码: 一:首页 //1.调用数据库,读取数据

关于oracle数据库读取数据的三种方式

打开oracle sqldeveloper,连接到HR模式下的数据库,在SQL工作表中,执行如下语句: CREATE TABLE WANG( Name  varchar2(6), ID     number        ); 然后向表中插入如下语句: INSERT INTO WANG VALUES('WANG',1): INSERT INTO WANG VALUES('CHENG',2); INSERT INTO WANG VALUES('ZHOU',3); INSERT INTO WANG