domino数据库(sql数据库比domino文本数据库好在哪里)

:暂无数据 2026-08-21 09:10:01 :0

domino数据库(sql数据库比domino文本数据库好在哪里)

大家好,如果您还对domino数据库不太了解,没有关系,今天就由本站为大家分享domino数据库的知识,包括sql数据库比domino文本数据库好在哪里的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

sql数据库比domino文本数据库好在哪里

最近的一些想法让我对文本数据库又一次产生了兴趣,一番搜索,果然发现了不少好东西.

首先是文本数据库的特点,主要相对于传统关于数据库的优缺点:

文本数据库的缺点一是并发访问麻烦,无法实现多个程序同时修改数据库里面的不同记录。
文本数据库的缺点二是查询、修改、删除非常麻烦,只能顺序查找,修改、删除需要更新整个文件。
文本数据库的优点显而易见,程序简单,数据库管理方便。
什么情况下才适合使用文本数据库呢?
首先只有对于无需并发访问的数据库,其次数据库不大(比如只有一条记录),或者不需要修改删除数据的数据库才适合使用文本类型。
比如网站的超级管理员,使用文本数据库存放就有优越性,无需任何数据库扩展,检查权限的程序直接获取文本内容即可,性能会比任何数据库都高。
这个表很少修改,而且也不会许多记录,所以适合用文本数据库。

也有很多开源的基于文本数据库的项目,博客啊论坛都有.这时想起以前旧博客上备份过一个php操作xml的类,这里重新记一下,也算是另一种文本数据库吧:

《?php
* example 读取数据:
*
* $xml = new xml(“dbase.xml“,’table’);
*
* $data=$xml-》xml_fetch_array();
*
* echo “《pre style=“font-size:12px;“》“;
*
* print_r($data);
*
class xml
{
var $dbase; //数据库,要读取的XML文件
var $dbname; //数据库名称,顶层元素,与数据库文件名称一致
var $dbtable; //数据表,要取得的节点
var $parser; //剖析器
var $vals; //属性
var $index; //索引
var $dbtable_array;//节点数组
var $array; //下级节点的数组
var $result; //返回的结果
var $querys;
function xml($dbase,$dbtable)
{
$this-》dbase=$dbase;
$this-》dbname=substr($dbase,strrpos($dbase,“/“)+1,-4);
$this-》dbtable=$dbtable;
$data=$this-》ReadXml($this-》dbase);
if(!$data){
die(“无法读取 $this-》dbname.xml“);
}
$this-》parser = xml_parser_create();
xml_parser_set_option($this-》parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($this-》parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($this-》parser,$data,$this-》vals,$this-》index);
xml_parser_free($this-》parser);
//遍历索引,筛选出要取值的节点 节点名:$dbtable
foreach ($this-》index as $key=》$val) {
if ($key == $this-》dbtable) {
//取得节点数组
$this-》dbtable_array = $val;
} else {
continue;
}
}
for ($i=0; $i 《 count($this-》dbtable_array); $i+=2) {
$offset = $this-》dbtable_array[$i] + 1;
$len = $this-》dbtable_array[$i + 1] - $offset;
//array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
//所取节点下级数组
$value=array_slice($this-》vals,$offset,$len);
//取得有效数组,合并为结果数组
$this-》array=$this-》parseEFF($value);
}
return true;
}
//将XML文件读入并返回字符串
function ReadXml($file)
{
return file_get_contents($file);
}
//取得有效数组
function parseEFF($effective) {
for ($i=0; $i 《 count($effective); $i++){
$effect[$effective[$i][“tag“]] = $effective[$i][“value“];
}
return $effect;
}
//xml_query(方法,条件,多条件时逻辑运算符and or or,插入或更新的数组)
function xml_query($method,$condition,$if=’and’,$array=array())
{
if(($method==’select’)||($method==’count’)){
return $this-》xml_select($method,$condition,$if);
} elseif($method==’insert’) {
return $this-》xml_insert($condition,$if,$array);
} elseif($method==’update’) {
return $this-》xml_update($condition,$if,$array);
}
}
//取得xml数组
function xml_fetch_array($condition,$if)
{
//$this-》querys++;
$row = $this-》array; //初始化数据数组
if($condition) {
//是否有条件,如有条件则生成符合条件的数组
//生成条件数组,条件格式 field,operator,match
$condition=explode(“,“,$condition);//条件数组
$cs=count($condition)/3; //条件数
for($i=0;$i《$cs;$i++){
$conditions=array(“field“=》$condition[$i*3],
“operator“=》$condition[$i*3+1],“match“=》$condition[$i*3+2]);
}
//echo count($row);
for($r=0;$r《count($row);$r++){
for($c=0;$c《$cs;$c++){
//$i++;
$condition=$conditions[$c]; //当前条件
$field=$condition[’field’]; //字段
$operator=$condition[“operator“];//运算符
$match=$condition[’match’]; //匹配
if(($operator==’=’)&&($row[$r][$field]==$match)){
$true++;//若条件符合,符合数加1
} elseif(($operator==’!=’)&&($row[$r][$field]!=$match)){
$true++;//若条件符合,符合数加1
} elseif(($operator==’《’)&&($row[$r][$field]《$match)){
$true++;//若条件符合,符合数加1
} elseif(($operator==’《=’)&&($row[$r][$field]《=$match)){
$true++;//若条件符合,符合数加1
} elseif(($operator==’》’)&&($row[$r][$field]》$match)){
$true++;//若条件符合,符合数加1
} elseif(($operator==’》’)&&($row[$r][$field]》=$match)){
$true++;//若条件符合,符合数加1
}
}
//根据条件取值
if($if==’and’){
//如果多条件为and,当符合数等于条件数时,生成数组
if($true==$cs){
$result=$row[$r];
}
} else {
//如果多条件为or,当有符合纪录时,生成数组
if($true!=0){
$result=$row[$r];
}
}
//echo $true;
//echo “《pre style=“font-size:12px;text-align:left“》“;
//print_r($true);
$true=0;//符合条件数归零,进入下一轮循环
}
} else {
$result=$this-》array;
}
//echo “《pre style=“font-size:12px;text-align:left“》“;
//print_r($this-》result);
return $result;
}
//筛选或统计
function xml_select($method,$condition,$if)
{
$result=$this-》xml_fetch_array($condition,$if);
if($method==’select’){
return $result;
} else {
return count($result);
}
}
//插入数据
function xml_insert($condition,$if,$array)
{
$data=$this-》xml_fetch_array($condition,$if);//总数据数组
$data=$array; //插入后的总数据数组
$this-》array=$data; //更新总数组
$this-》WriteXml($data);
}
//得到更新的XML并改写
function xml_update($condition,$if,$array)
{
$datas=$this-》array; //总数据数组
$subtract=$this-》xml_fetch_array($condition,$if);//要更新的数组
//echo “《pre style=“font-size:12px;text-align:left“》“;
//print_r($data);
//print_r($datas);
//echo “每条记录中有“.count($datas).“个值《br》“;
for($i=0;$i《count($datas);$i++){
$data=$datas[$i];
//echo “原始记录中的第“.$i.“条《br》“;
foreach($data as $k=》$v){
//echo “-第“.$i.“条的“.$k.“值为“.$v.“《br》“;
//echo “--要查找的数组“.$k.“值为“.$subtract[$k].“《br》“;
if($v==$subtract[$k]){
$is++;
}
}
if($is==count($data)){
//echo “----与第“.$i.“条符合《br》“;
$datas[$i]=$array;
//array_splice($datas,$i,$i+1);
}
//echo “原始记录中的第“.$i.“条与要查找的有“.$is.“匹配《br》“;
//echo “原始记录中的第“.$i.“条结束《br》“;
$is=0;
}
//array_splice($datas,2,2+1,$array);
//echo “《pre style=“font-size:12px;text-align:left“》“;
//print_r($datas);
$this-》array=$datas;
$this-》WriteXml($datas);
}
//写入XML文件(全部写入)
function WriteXml($array)
{
if(!is_writeable($this-》dbase)){
die(“无法写入“.$this-》dbname.“.xml“);
}
$xml.=“《?xml version=“1.0“ encoding=“utf-8“?》rn“;
$xml.=“《$this-》dbname》rn“;
for($i=0;$i《count($array);$i++){
$xml.=“《$this-》dbtable》rn“;
foreach($array[$i] as $k=》$s){
$xml.=“《$k》$s《/$k》rn“;
}
$xml.=“《/$this-》dbtable》rn“;
}
$xml.=“《/$this-》dbname》“;
$fp=@fopen($this-》dbase,“w“);
flock($fp, LOCK_EX);
rewind($fp);
fputs($fp,$xml);
fclose($fp);
}
//逐行写入xml(我试着写入10000行,感觉没一次写入快,所以没用这种写入方式)
function WriteLine($array)
{
if(!is_writeable($this-》dbase)){
die(“无法写入“.$this-》dbname.“.xml“);
}
$fp=@fopen($this-》dbase,“w“);
rewind($fp);
flock($fp, LOCK_EX);
fputs($fp,“《?xml version=“1.0“ encoding=“utf-8“?》rn“);
fputs($fp,“《$this-》dbname》rn“);
for($i=0;$i《count($array);$i++){
fputs($fp,“《$this-》dbtable》rn“);
$xml.=“《$this-》dbtable》rn“;
foreach($array[$i] as $k=》$s){
fputs($fp,“《$k》$s《/$k》rn“);
}
fputs($fp,“《/$this-》dbtable》rn“);
}
fputs($fp,“《/$this-》dbname》“);
fclose($fp);
}
}
?》

再一查,其实这种文本数据库也是很强大的,像txtsql,txtDB API,txtdb等等.

用好了也可以扬长避短.

说回来各有各的好处,也就要学会在合适的地方用上合适的工具.可以研究一下php操作文本数据库.

java调用domino数据库

java访问操作lotus domino数据库
有几种方式:
1、直接使用domino本身的jar文件接口,这种连接方式需要domino服务器启动diiop服务;
2、使用domino的lddj接口,接口可以到ibm的网站上去下载,这种连接方式只能在window环境下使用,需要安装notes客户端,使用id来验证的,需要手动输入密码;
http://www-12.lotus.com/ldd/doc/drivers/jdbc/1.5/lddj_help.nsf
3、使用corba来访问domino,这个比较烦,我至今没有调通
http://www.oaunion.com/oaunion/o ... pendocument&skeyword=corba发表者:slzhang
是可以通过java来取得domino的资料.也可以通过jsp来读domino里的资料,只要你在domino上打开diiop服务就可以.
附一个jsp的例子如下:
《%@ page c language=“java“%》
《%@ page import=“com.dragon.*“ %》
《%@ page import=“lotus.domino.*“ %》
《%!
session sess;
database db;
view view;
document doc;
string host = ““,user = ““, pawd = ““;
%》
《%
try{
sess = notesfactory.createsession(“192.168.2.1“,“admin“,“12345678“);
host = sess.getservername();
user = sess.getusername();
system.out.println(“host: “ + host + “; user: “ +user);
db = sess.getdatabase(host,“fawen\\sample.nsf“,false);
view = db.getview(“jsp“);
doc = view.getfirstdocument();
out.println(db.gettitle());
}catch(notesexception ne){
system.out.println(“error: “ + ne.id + “ ==》 “ + ne.getmessage());
}
%》
《html》
《head》
《title》jsp get domino data《/title》
《/head》
《body》
《table border=“1“ bgcolor=“#ff33cc“》
《tr》《th》 姓名《/th》《th》性别《/th》《th》生日《/th》《th》职务《/th》《th》职称《/th》《th》 部门《/th》《/tr》
《%
while(doc!=null){
%》
《tr》

《td》《%= doc.getitemvalue(“jname“) %》《/td》
《td》《%= doc.getitemvalue(“jsex“) %》《/td》
《td》《%= doc.getitemvalue(“jbirth“) %》《/td》
《td》《%= doc.getitemvalue(“jjob“) %》《/td》
《td》《%= doc.getitemvalue(“jjobtitle“) %》《/td》
《td》《%= doc.getitemvalue(“jdept“) %》《/td》
《/tr》
《%
doc = view.getnextdocument(doc);
}
out.println(“host: “ + host + “; user: “ +user);
doc.recycle();
view.recycle();
db.recycle();
sess.recycle();
%》
《/table》
《/body》
《/html》
发表者:cnhxjtoa
以前我写过domino5--》oracle8
以下是与domino建立链接的相关代码
import lotus.domino.*;

try {

system.out.println(“开始notes数据源进行连接....“);
session s = notesfactory.createsession(noteshost,username,userpassword);
system.out.println(“与notes数据源成功连接,现正在查找notes登录数据库oak.nsf“);
//定义全局性变量
database db = null;
database namesdb=null;
view view =null;
document doc = null;
string namesuser=““;
db = s.getdatabase(s.getservername(), sysinf.notes_dir +“/oak.nsf“);
acl acl = db.getacl();
aclentry entry = acl.getfirstentry();
namesdb=s.getdatabase(s.getservername() ,“names.nsf“) ;
view = namesdb.getview(“groups“);
do
{
//具体分析每一个对象
switch (entry.getusertype()) {
case aclentry.type_mixed_group :
//混合组
system.out.println(“混合组 “+entry.getname()) ;break;
case aclentry.type_person :
//个人
namesuser=entry.getname().substring(3,entry.getname().indexof(“/“) );
addnotesuser(namesuser);
system.out.println(“个人 : “+ namesuser) ;
break;
case aclentry.type_person_group :
//个人群组
system.out.println(“个人群组: “+entry.getname() ) ;
//names.nsf 中视图groups 文档members域有每一个用户
doc = view.getfirstdocument();
while (doc != null && !doc.getfirstitem(“listname“).gettext().equals(entry.getname() ) )
{
doc = view.getnextdocument(doc);
}
if (doc!=null){
enumeration values = doc.getfirstitem(“members“).getvalues().elements();
while (values.hasmoreelements()) {
//将cn=administrator/o=autosoft只取它的名字administrator
namesuser=values.nextelement().tostring() ;
namesuser=namesuser.substring(3,namesuser.indexof(“/“) ) ;
addnotesuser(namesuser);
}
}
break;
case aclentry.type_server :
//服务器
system.out.println(“服务器 “+entry.getname()) ;break;
case aclentry.type_server_group :
//服务器组
system.out.println(“服务器组 “+entry.getname()) ;break;
case aclentry.type_unspecified :
//没有指定
if(entry.getname().indexof(“/“)》1 )
{
namesuser=entry.getname().substring(3,entry.getname().indexof(“/“) );
addnotesuser(namesuser);
system.out.println(“找到一个没有指定类型的用户 “+entry.getname().substring(3,entry.getname().indexof(“/“))) ;
break;
}
else
{
system.out.println(“没有指定 “+entry.getname()) ;
break;
}
}
} while ((entry = acl.getnextentry(entry)) != null);
system.out.println(“用户导入完成“) ;
}

catch (exception ex)
{
ex.printstacktrace() ;
system.out.println(“与notes数据源连接失败“ ) ;
}

JAVA可以操作domino类型的数据库吗

可以的,有几种方式:
1、直接使用Domino本身的jar(notes.jar或NCSO.jar)文件接口,这种连接方式需要Domino服务器启动DIIOP服务;
2、使用Domino的LDDJ(Lotus Domino Drivers for JDBC)接口,接口可以到IBM的网站上去下载,这种连接方式只能在window环境下使用,需要安装notes客户端,使用ID来验证的,需要手动输入密码;
http://www-12.lotus.com/ldd/doc/drivers/jdbc/1.5/lddj_help.nsf
3、使用Corba来访问Domino,这个比较烦,我至今没有调通
http://www.oaunion.com/oaunion/oaunion.nsf/doc/05728898F1320F4F48256DF7004CFBE5?opendocument&skeyword=Corba

java怎样读domino数据库中的数据

Class.forName的(“com.mysql.jdbc.Driver”);

连接conn = DriverManager.getConnection(“JDBC:mysql的:/ /”+主机+“/”+数据库名,用户名,密码);

声明STMT = conn.createStatement();

ResultSet的RS = Stmt.executeQuery(SQL);

这是基本的数据库操作
关于这个过程是加载驱动程序类,创建一个连接,执行数据库操作,关闭

后的数据源,连接池

Hibernate的对象关系映射的类来操作数据库的日常的日常项目

关于domino数据库到此分享完毕,希望能帮助到您。

domino数据库(sql数据库比domino文本数据库好在哪里)

本文编辑:admin

更多文章:


majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

各位老铁们,大家好,今天由我来为大家分享云备份,以及手机云备份是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 02:40

java遍历map的key(java Map 怎么遍历)

java遍历map的key(java Map 怎么遍历)

大家好,java遍历map的key相信很多的网友都不是很明白,包括java Map 怎么遍历也是一样,不过没有关系,接下来就来为大家分享关于java遍历map的key和java Map 怎么遍历的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月11日 02:20

最近更新

majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
promote翻译(英语翻译倡导怎么说)
2026-10-11 06:30:03 浏览:0
热门文章

标签列表