2011-08-26 70 views
0

作爲一個個人項目,我一直在用C#開發自己的數據庫軟件。許多當前的數據庫系統可以使用SQL命令進行查詢。在這裏有沒有人能指出我在一個完全從頭開始編寫的數據庫軟件中實現這樣一個系統的正確方向?例如,熟悉SQL的用戶可以將語句作爲字符串輸入到應用程序中,該語句將由我的應用程序進行分析,並且將運行正確的查詢。有沒有人有過類似這樣的經歷?這可能是一個非常不尋常的問題哈哈。基本上我在問什麼,有沒有可以分析SQL語句的工具,還是我必須從頭開始編寫自己的工具?C#自定義數據庫引擎,如何實現SQL

在此先感謝您的幫助!

(我可以轉移我的一些東西Python和Java,因此任何可能的答案不必限於C#)

ALSO:我沒有使用任何現有的SQL數據庫之類的東西,我的系統是完全從頭開始,我希望我的問題有道理。基本上我希望我的應用程序能夠與發送SQL命令的程序進行交互。

+1

http://stackoverflow.com/questions/660609/sql-parser-library-for-java http://stackoverflow.com/questions/1147212/sql-parser-in-c – Kev

+0

它需要閱讀SQL命令,以其自己的方式查找數據,並以任何其他SQL應用程序的方式將其返回。目前我還在學習SQL,所以我還不完全熟悉。我想從我的應用程序創建一組允許輸入SQL語句的函數,它將理解輸入的SQL語句,然後它將運行可以獲取輸出的正確代碼,然後以堅持的方式構造輸出到SQL。我需要更多理解的部分是「理解」SQL語句部分。這有任何意義嗎? – MReed

+0

那裏有解析器生成器,[如Antlr](http://www.antlr.org/)。這些工具需要語法並生成詞法分析器和解析器代碼。然後,您可以向該代碼提供文本以獲取可用於驅動數據庫的內存中對象。 –

回答

3

一個完整的數據庫引擎是一個非常認真的工作。你不會坐下來,並在下週擁有一個完整的引擎,所以我原以爲你會想要逐字地編寫SQL解析器:在引擎中支持的功能添加功能到解析器。

我猜這只是一件很有趣的事情,而不是你想要儘快工作的東西。鑑於此,我認爲編寫一個SQL解析器是該項目最好的部分之一!我在平面文件數據庫引擎上做了很多工作,因爲查詢所需的響應時間不允許RDBMS。最令人愉快的一點是增加了對例如SQL片段的支持。 UI的響應時間並不十分重要。

我工作的實現是普通的C語言,但實際上從我所見到的情況來看,大多數關係數據庫仍然主要用C語言編寫。而且用低級語言編寫這些東西是令人滿意的: )

+0

是的,這些都是我的意圖。然而,我認爲,看一些以前的工作可以給我一些關於如何去做的想法。我對編程遊戲相當陌生,所以我從來沒有使用過普通的C語言,儘管我喜歡不依賴於.NET Framework的想法 - 儘管這樣做很多工作... – MReed

+0

可能是一個體面的地方,看起來是在SQLite中,它提供了最簡單的關係數據庫實現之一。不過要注意,離簡單還有很長的路要走! http://www.sqlite.org/ – asc99c

+0

好簡單不一定是我要找的。我對關係數據庫的想法有獨特的方法,並且計劃隨着時間的推移使它成爲一個完整的系統。這實際上是我的第二次迭代,我徹底從頭開始...... 請問你的方法是什麼?有沒有人討論過這樣的問題的論壇?我還沒有找到它lol ... – MReed

相關問題