日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/5/22 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一次接触 SharpHsql(纯C#开源数据库引擎) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????
????????? 在 開源中的靈感之源 的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#开源数据库引擎)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。