value = (_variant_t)m_DataSet.GetFields()->Item[L"ID"]->Value; //编号
ID = value.intVal;
m_tree.SetItemData(node,ID); //与节点关联
if (ID)
{
GetNode(node,ID);
}
//m_DataSet.Next(); //记录下移
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return;
}
}
9 个解决方案
#1
楼主不要使用这种重复查询的功能了,建议使用 with as 块,一次性都查出来 ;
#2
可以考虑直接用 sql的方式,写个递归查询,这样比较高效,而不是通过程序来实现递归。
具体sql server的递归,可以用with 的方式写,百度一下,很多的
#3
这样数据库连接次数太多了。楼主可以按照楼上两位的说法,用with as 方法在数据库中递归读出数据老。也可以把所有数据都读出来,然后在程序里用lamdba处理结构。
#4
直接用sql方式的话,如果我在MFC程序中需要执行添加,删除等操作,也没问题吗?
#5
没问题的。
你执行完添加,后者删除之后,可以重新执行一下这个递归sql,重新刷一下控件
#6
这样数据库连接次数太多了。楼主可以按照楼上两位的说法,用with as 方法在数据库中递归读出数据老。也可以把所有数据都读出来,然后在程序里用lamdba处理结构。
#7
头像不错
#8
#9
可以考虑直接用 sql的方式,写个递归查询,这样比较高效,而不是通过程序来实现递归。
具体sql server的递归,可以用with 的方式写,百度一下,很多的
直接用sql方式的话,如果我在MFC程序中需要执行添加,删除等操作,也没问题吗?
没问题的。
你执行完添加,后者删除之后,可以重新执行一下这个递归sql,重新刷一下控件
m_DataSet.Open(_T( "with district as (select * from tab_Dept where ID = 1 union all select a.* from tab_Dept a,district b where a.PID = b.ID) select * from district"));
这条语句执行不了,查询了下执行后的结果int counts = m_DataSet.GetRecordCount(); 得到count=-1
m_DataSet.Open(_T("Select * From tab_User"));
但是这条就没问题
这是什么原因?
#1
楼主不要使用这种重复查询的功能了,建议使用 with as 块,一次性都查出来 ;
#2
可以考虑直接用 sql的方式,写个递归查询,这样比较高效,而不是通过程序来实现递归。
具体sql server的递归,可以用with 的方式写,百度一下,很多的
#3
这样数据库连接次数太多了。楼主可以按照楼上两位的说法,用with as 方法在数据库中递归读出数据老。也可以把所有数据都读出来,然后在程序里用lamdba处理结构。
#4
可以考虑直接用 sql的方式,写个递归查询,这样比较高效,而不是通过程序来实现递归。
具体sql server的递归,可以用with 的方式写,百度一下,很多的
直接用sql方式的话,如果我在MFC程序中需要执行添加,删除等操作,也没问题吗?
#5
可以考虑直接用 sql的方式,写个递归查询,这样比较高效,而不是通过程序来实现递归。
具体sql server的递归,可以用with 的方式写,百度一下,很多的
直接用sql方式的话,如果我在MFC程序中需要执行添加,删除等操作,也没问题吗?
没问题的。
你执行完添加,后者删除之后,可以重新执行一下这个递归sql,重新刷一下控件
#6
这样数据库连接次数太多了。楼主可以按照楼上两位的说法,用with as 方法在数据库中递归读出数据老。也可以把所有数据都读出来,然后在程序里用lamdba处理结构。
#7
头像不错
#8
#9
可以考虑直接用 sql的方式,写个递归查询,这样比较高效,而不是通过程序来实现递归。
具体sql server的递归,可以用with 的方式写,百度一下,很多的
直接用sql方式的话,如果我在MFC程序中需要执行添加,删除等操作,也没问题吗?
没问题的。
你执行完添加,后者删除之后,可以重新执行一下这个递归sql,重新刷一下控件
m_DataSet.Open(_T( "with district as (select * from tab_Dept where ID = 1 union all select a.* from tab_Dept a,district b where a.PID = b.ID) select * from district"));
这条语句执行不了,查询了下执行后的结果int counts = m_DataSet.GetRecordCount(); 得到count=-1
m_DataSet.Open(_T("Select * From tab_User"));
但是这条就没问题
这是什么原因?