存档

‘数据库’ 分类的存档

分级查询与递归查询的区别

2013年4月11日 没有评论

概要说明

以oracle数据库hr用户下自带的employees表为例:
要查询出employees表中manager_id为100的雇员的所有下级:

递归查询

在hibernate中可以写如下的hql语句:

"from Employees e where e.manager_id = 100"

递归的方法如下:

public String getEmployeesRoot()
{
	String HQL =“from Employees e where e.manager_id = 100”;
	List list = baseService.getAllByHQL(HQL);
	for(int i=0;i<list.size();i++)
	{
		Employees employees = (Employees) list.get(i);
		Set childNodes = employees.getChilds();
		recursionEmployees (childNodes);
	}
}

private void recursionEmployees(Set childNodes) {
	Iterator it = childNodes.iterator();
	while (it.hasNext()) {
		Employees employees = (Employees) it.next();
		Set node = employees.getChilds();
		if (!node.isEmpty()) {
			recursionEmployees(node);
		}
	}
}

现在对以上的递归查询进行分析:
1、访问数据库的次数:
因为每一个节点在取出来之后都要通过getChild(Set childSet)去取当前节点的子节点,(实际上就是执行from employees e where e.manager_id = ?)并判断是否为空,如果非空则再次进入递归;
所以每一个节点有要请求一次数据库,所有请求次数与树的节点数相同!
2、内存占用程度:
在递归时要存在动态的压栈与弹栈的过程,并随着节点数与节点层数的增加面增加!

阅读全文…

oracle11g 通过修改配置文件方式连接远程数据库

2012年8月28日 没有评论

       通过修改数据库配置文件的方式连接远程数据库(每个人安装的位置不同,找到自己的位置)我的数据库位置:D:\app\ZhangYQ\product\11.2.0\dbhome_1\NETWORK\ADMIN\ 修改目录下tnsnames.ora 文件中的配置即可。
根据自己的服务器地址加入以下代码:

ORA10 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 121.52.216.217)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

说明:HOST = 121.52.216.217为你需要连接的oracle服务器IP,SERVICE_NAME = orcl为你要连接的数据实例名

如何处理SQL Server安装过程中COM+检查失败的问题

2012年7月11日 没有评论

装SQL2005时检查系统配置时出现COM+检查警告。

解决方法:

在命令行下输入:

msdtc -uninstall 回车

msdtc -install 回车

再重新运行SQLSQServer的setup.exe即可

                                             爱分享   2010-11-27