65.9K
CodeProject 正在变化。 阅读更多。
Home

HyperNetDatabase

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.11/5 (14投票s)

2004 年 3 月 18 日

4分钟阅读

viewsIcon

126185

downloadIcon

820

HyperNetDatabase 是一个单进程多线程且防黑客的数据库。

Sample Image - maximum width is 600 pixels

Sample Image - maximum width is 600 pixels

引言

本项目旨在帮助那些将 ACCESS 等商业数据库用于小型项目,从而受到商业法律约束的用户。这是一个简单的数据库引擎解决方案,可以为常规数据库任务提供强大的功能。此驱动程序免费(GPL)。

使用代码

将 HyperNetDatabase.DLL 和 NetFrmExts.DLL 这两个 DLL 链接到您的项目中即可。请注意使用 R2 版本,R1 版本较旧且不稳定。

打开数据库并执行 select 操作

using HyperNetDatabase.R2;
...
Database db = new Database();
db.Open("file.hnd"); // creates or opens database
...
..
DataTable result = db.Select(
    new string[]{"SEQNAME"}, // fields as an array of strings
    "$Sequences", // Name of the table
    new object[,]{ {"SEQNAME","=",myseq} } 
  // pairs of filter conditions : ... WHERE SEQNAME=myseq AND ...
    );
..
db.Close();

 

公共静态方法


DataRow2NameAndValue DataRow 转换为 NameAndValue 对象,并可选择跳过行。

公共实例构造函数


Database 构造函数 默认构造函数

公共实例属性


Filename 数据库文件名
Lock 全局锁,用于锁定其他线程执行并发查询。例如:先读取再插入。
State 连接状态

公共实例方法

AddField 添加字段
AddFieldIfNotExist 如果字段不存在则添加
AddTable 添加表
AddTableIfNotExist 如果表不存在则添加
Close 关闭数据库
Delete SQL DELETE 查询示例
   using HyperNetDatabase.R2;
   ...
   Database db = new Database();
   db.Open("file.hnd"); 
    // creates or opens database
   ...
   string StockName = "peppers";
   DataTable result = db.Delete("Stock",
   new object[,]{ {"NAME","=",StockName} }
   );
   ...
   

等同于:DELETE Stock WHERE NAME=@StockName

WHERE 表达式:用于生成 WHERE 子句的 C# 表达式。

  • new object[,]{ {"{字段名}",{操作符},{参数}},... } 等同于 "字段 操作符 参数 AND ..."
  • null 等同于无 WHERE 条件。

操作符 Effect
= 相等
> 左侧字段名大于右侧常量值变量的值
>= 左侧字段名大于等于右侧常量值变量的值
< 左侧字段名小于右侧常量值变量的值
<= 左侧字段名小于等于右侧常量值变量的值
!= 左侧字段名不等于右侧常量值变量的值

DropTable 删除表
DropTableIfExists 如果表存在则删除
Dump 转储页面状态
ExistsTable 如果表存在则返回 true
FlushIndexes 销毁内存索引。如果已经遍历了很多表且内存资源不足,请执行此操作。
ForcedInsert 重载。更广为人知的名称是 Update or Insert(通过键字段设置值),如果条件不匹配则插入,如果条件匹配则更新。
   db.ForcedInsert( "Stock", "NAME", 
     "Peppers", "Qty", 0.5m );
   
等同于
   SELECT Count(*) FROM STOCK WHERE NAME="Peppers";
   if count > 0 then
   UPDATE STOCK SET Qty=0.5 WHERE NAME="Peppers";
   else
   INSERT INTO STOCK (NAME,Qty) 
      VALUES ("Peppers",0.5);
   
ForcedSelect 获取一个值,如果不存在则获取其默认值
GetTableNames 获取此数据库中的所有表
GetUserFields 用户字段
Insert 向表中插入数据示例
   using HyperNetDatabase.R2;
   ...
   Database db = new Database();
   db.Open("file.hnd"); 
    // creates or opens database
   ...
   string StockName = "peppers";
   DataTable result = db.Insert(
    "Stock", new object[,]
  { {"NAME",StockName}, {"QTY",0.5m} } );
   ...
   

等同于:INSERT INTO Stock (NAME,QTY) VALUES (@StockName,0.5);

SET 表达式:用于指示字段及其值的 C# 表达式。new object[,]{ {"{FIELDNAME}",{parameter}},... } 等同于 "SET 字段 = 参数, ..."示例 1

     new object[,]{ {"QTY",0.5m} }
     
示例 2
     new object[,]{ {"STRNAME","peppers"}, 
      {"QTY",0.5m} }
     
LogToFile (继承自 LogSupport) 将字符串保存到日志文件中
Open 打开
PreloadIndexes 预加载表索引以加快读取速度
Select SQL Select 查询。示例
   using HyperNetDatabase.R2;
   ...
   Database db = new Database();
   db.Open("file.hnd"); // creates or opens database
   ...
   string StockName = "peppers";
   DataTable result = db.Select(null,"Stock",
   new object[,]{ {"NAME","=",StockName} }
   );
   ...
   result = db.Select(new string[]{"NAME"},"Stock",
   new object[,]{ {"NAME","=",StockName} }
   );
   ...
   
等同于
  • SELECT * FROM Stock WHERE NAME=@StockName
  • SELECT NAME FROM Stock WHERE NAME=@StockName
WHERE 表达式:用于生成 WHERE 子句的 C# 表达式。
  • new object[,]{ {"{字段名}", {操作符},{参数}},... } 等同于 "字段 操作符 参数 AND ..."
  • null 等同于无 WHERE 条件。

操作符 Effect
= 相等
> 左侧字段名大于右侧常量值变量的值
>= 左侧字段名大于等于右侧常量值变量的值
< 左侧字段名小于右侧常量值变量的值
<= 左侧字段名小于等于右侧常量值变量的值
!= 左侧字段名不等于右侧常量值变量的值

seqCreate 重载。创建序列。
seqCurrentValue 当前序列值
seqDrop 删除序列
seqExists 序列是否存在?
seqNextValue 下一个序列值(并自动递增)
Update SQL UPDATE 查询示例
   using HyperNetDatabase.R2;
   ...
   Database db = new Database();
   db.Open("file.hnd"); // creates or opens database
   ...
   string StockName = "peppers";
   DataTable result = db.Update("Stock",
   new object[,]{ {"NAME",StockName}, {"QTY",0.5m} },
   new object[,]{ {"NAME","=","pepperoni"} }
   );
   ...
   

等同于:UPDATE Stock SET NAME=@StockName, QTY=0.5 WHERE NAME=pepperoni

WHERE 表达式:用于生成 WHERE 子句的 C# 表达式。

  • new object[,]{ {"{字段名}",{操作符},{参数}},... } 等同于 "字段 操作符 参数 AND ..."
  • null 等同于无 WHERE 条件。

操作符 Effect
= 相等
> 左侧字段名大于右侧常量值变量的值
>= 左侧字段名大于等于右侧常量值变量的值
< 左侧字段名小于右侧常量值变量的值
<= 左侧字段名小于等于右侧常量值变量的值
!= 左侧字段名不等于右侧常量值变量的值

SET 表达式:用于指示字段及其值的 C# 表达式。

new object[,]{ {"{FIELDNAME}",{parameter}},... } 等同于 "SET 字段 = 参数, ..."

示例 1

     new object[,]{ {"QTY",0.5m} }     
示例 2
     new object[,]{ {"STRNAME","peppers"}, 
      {"QTY",0.5m} }     



关注点

  • 支持所有基本的 SQL 函数。
  • 附加功能。
  • 防止断电
  • 多线程安全

历史

发布版本 2.0.0 说明 - 2004-03-17

特点

  • 第一个稳定版本
  • 支持所有基本的 SQL 函数。
  • 附加功能。
  • 防止断电
  • 多线程安全
© . All rights reserved.