在 开源中的灵感之源 的blog上看到这篇文章 开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本 这篇文章,着实幸福了一阵。
      类似的数据库引擎我用过不少,比如 sqlite 、MINOSSE 等。sqlite是纯c在web应用中不方便,minnosse就根本没有办法正常运行。
      我寻找 这样的数据库引擎 最主要的原因是 想在web项目中替代ACCESS,减少网站建设费用和提高网站性能。
      首先我将SharpHsql 跟SQL Server 2000 进行比较 其中创建表和删除表的数据 Hsql领先。修改、查询数据速度基本上持平,查询时SharpHsql要慢一点(很小的一点),SharpHsql的查询同样使用了缓存技术。
     插入数据的时候随表中数据增加而速度越慢,在1万行数据时时间增加减缓,这个速度大大慢于SQL server;
     我以前做测试access 的数据基本上是 SQL server 的1/10,所以SharpHsql的速度相对于Access还是很有优势的,综合比较基本是ACCESS 六倍以上的性能。

SharpHsql 的数据库一共是 4 个文件  *.data 、*.cfg 、*.log 、 *.backup ;看后缀大家就知道干什么的,我就不多说了

我们来看看他支持的功能,我这里摘录一段代码,大家看了代码就明白

    switch(sToken)
                    {
                        case "SELECT":
                             rResult = p.ProcessSelect();
                            break;
                        case "INSERT":
                            rResult = p.ProcessInsert();
                            break;
                        case "UPDATE":
                            rResult = p.ProcessUpdate();
                            break;
                        case "DELETE":
                            rResult = p.ProcessDelete();
                            break;
                        case "ALTER":
                            rResult=p.ProcessAlter();
                            break;
                        case "CREATE":
                            rResult = ProcessCreate(c, channel);
                            script = true;
                            break;
                        case "DROP":
                            rResult = ProcessDrop(c, channel);
                            script = true;
                            break;
                        case "GRANT":
                            rResult = ProcessGrantOrRevoke(c, channel, true);
                            script = true;
                            break;
                        case "REVOKE":
                            rResult = ProcessGrantOrRevoke(c, channel, false);
                            script = true;
                            break;
                        case "CONNECT":
                            rResult = ProcessConnect(c, channel);
                            break;
                        case "DISCONNECT":
                            rResult = ProcessDisconnect(c, channel);
                            break;
                        case "SET":
                            rResult = ProcessSet(c, channel);
                            script = true;
                            break;
                        case "SCRIPT":
                            rResult = ProcessScript(c, channel);
                            break;
                        case "COMMIT":
                            rResult = ProcessCommit(c, channel);
                            script = true;
                            break;
                        case "ROLLBACK":
                            rResult = ProcessRollback(c, channel);
                            script = true;
                            break;
                        case "SHUTDOWN":
                            rResult = ProcessShutdown(c, channel);
                            break;
                        case "CHECKPOINT":
                            rResult = ProcessCheckpoint(channel);
                            break;
                        case "CALL":
                            rResult = p.ProcessCall();
                            break;
                        case "SHOW":
                            rResult = ProcessShow(c,channel);
                            break;
                        case "DECLARE":
                            rResult = p.ProcessDeclare();
                            script = true;
                            break;
                        case ";":
                            continue;
                        default:
                            throw Trace.Error(Trace.UnexpectedToken, sToken);
                    }

然后在DataReader的时候 他的 DataReader没有实现索引器,只能用 DataReader[  Columnname ] 的方式 和DataReader.GetInt32(0) 这样的方式实现。需要注意的是  DataReader[  Columnname ]  中的 列名称需使用大写,在系统里面名称这些全部是SharpHsql全部是大写处理的;
    DataReader[  Columnname ] 这种方式是使用 HashTable 实现,DataReader.GetInt32(0) 是使用 object[]实现。
 
  在使用SharpHsqlDataAdapter 的时候,会发现 非SharpHsqlDataAdapter .Fill(dataset)这样的形式会报错,比如SharpHsqlDataAdapter .Fill(dataset,tablename );这个问题好办只要删除  SharpHsqlDataAdapter.cs中的Fill方法就可以了,实际上他不需要重写。

    public override int Fill(DataSet dataSet)
        {
            return base.Fill( dataSet );
        }

我发现的问题暂时就这些,我已经喜欢上它了。

对了,他的log4net系统实在占用空间,我把它去除了!

总的来说数据库引擎还是比较完善,只是 驱动写的比较马虎 ,还有就是 数据对象名称 这些不应该全部换成大写。

程序猿们,我也跟风开了网店,主要经营土特产,云南核桃,四川正宗土鸡蛋。有需要的就支持一下小店哈  七彩山川美食(http://qcsc.taobao.com)

转载于:https://www.cnblogs.com/leiyu1980/archive/2005/08/10/211504.html

第一次接触 SharpHsql(纯C#开源数据库引擎)相关推荐

  1. 开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本

    开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本出了2个多月了,我一直没有给大家报道,这是目前唯一发现的用纯C#开发的稳定的轻量级数据库引擎,在我的建议下,已经支持Unicode,包 ...

  2. Java开源数据库引擎,数据库计算封闭性的一站式解决方案

    目录 前言引入 一.数据库封闭性带来的问题? 问题1: ETL变成ELT甚至LET ETL: ELT: 问题2: 中间表带来的资源消耗和耦合 问题3: 多样性数据源 问题4: 存储过程带来的安全和耦合 ...

  3. Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库

    Hypersonic SQL Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库.好像不是JDBC兼容的,JDBC的很多高级的特性都没有支持,不过幸好支持ANSI- 92 ...

  4. SharpHsql -- 只适合用于演示数据的数据库引擎

    SharpHSql 是一个纯C#写就的支持sql92标准的轻量数据库引擎,当我们为了便于发布而选用单DLL的数据库引擎时,SharpHsql以它的100% managed code而受到青睐.大家一下 ...

  5. 由Effiproz DataBase来看.NET开源数据库发展

    这篇文章本来应该写在上个周末, 可是临时有事给耽误了,上周五在MSDN上看到Effiproz DataBase发布了1.2版本. 在Effiproz以前也用过几个嵌入式开源数据库. 不过Effipro ...

  6. 一篇文章,掌握所有开源数据库的现状

    数据库作为业务的核心,在整个基础软件栈中是非常重要的一环.近几年社区也是新的方案和思想层出不穷,接下来我将总结一下近几年一些主流的开源数据库方案,其背后的设计思想以及适用场景.本人才疏学浅如有遗漏或者 ...

  7. 揭秘下一代云数据库引擎MyBasefor PostgreSQL

    简介:在MyBase中,PG引擎除了包含RDS所有的能力,还包含GIS.分词搜索.精准营销.复杂SQL.Oracle兼容扩展和图像识别等核心能力. 一.PostgreSQL引擎核心能力 Postgre ...

  8. 35个非主流开源数据库

    几乎每个Web开发人员都有自己喜欢的数据库,或自己最熟悉的数据库,但最常见的无外乎以下几种: MySQL PostgreSQL MSSQL SQLite MS Access 或是更简单的XML,文本文 ...

  9. 一种数据库打天下?开源数据库选型应该注意什么?

    墨墨导读:开源数据库选择怎么做,应该从哪方面进行考虑? 数据技术嘉年华,十周年盛大开启,点我立即报名!大会以"自研·智能·新基建--云和数据促创新 生态融合新十年" 为主题,相邀数 ...

最新文章

  1. python爬虫源码怎么使用_Python爬虫具体应该怎么使用?
  2. 【故事】创业者破产后自述:别总谈商业模式、推广和体验
  3. Mybatis SQL拦截器实现
  4. 献给汇编初学者-函数调用堆栈变化分析
  5. 读书笔记——计算机组成原理
  6. C#牛人要具备的知识
  7. 在jexus下如何简单的配置多站点
  8. iOS开发,导入CocoaPods常用的类库
  9. [Android动画] 补间动画-动画工具类( AnimationUtils)七
  10. 小程序怎么判断是在PC端打开的还是手机端打开的?
  11. 计算机大作业论文意义,重庆大学数理统计大作业——论文
  12. EXCEL表格-COUNTIF函数查找数据重复项
  13. 关于人工智能数据标注学习
  14. 微信wxp协议 服务器设置,微信支付
  15. 面试官:淘宝七天自动确认收货,可以怎么实现?
  16. 蓝牙地址BD_ADDR组成
  17. 计算机单招基础知识试题,高职单招《计算机类专业基础知识》正式试卷
  18. 随机生成数猜大小(java实现)
  19. php x20有啥用,vivo X20有什么新功能
  20. C# 读取或修改文件后缀

热门文章

  1. android中获取某段程序的执行时间
  2. SpringMVC之Http标准的头部信息
  3. Asp.net设计模式笔记之一:理解设计模式
  4. oracle易忘函数用法(3)
  5. 自定义注解-aop实现日志记录
  6. [Go] go get获取官方库被墙解决
  7. python3 string
  8. [codeVS1204] 单词背诵
  9. CentOS学习笔记 - 7. jekins安装
  10. firefox不激活新标签页