2011-08-26 99 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