2011-08-26 5 views
0

개인 프로젝트로서 저는 C#으로 자체 데이터베이스 소프트웨어를 개발해 왔습니다. 많은 현재의 데이터베이스 시스템은 쿼리를 위해 SQL 명령을 사용할 수 있습니다. 처음부터 완벽하게 작성된 데이터베이스 소프트웨어에 이러한 시스템을 구현하는 올바른 방향으로 나를 안내 할 수있는 사람이 있습니까? 예를 들어, SQL에 익숙한 사용자는 응용 프로그램에 문자열로 명령문을 입력 할 수 있습니다.이 명령문은 응용 프로그램에서 분석되고 적절한 쿼리가 실행됩니다. 누구든지 여기에 그런 경험이 있습니까? 이것은 아마도 매우 특이한 질문 haha입니다. 기본적으로 내가 묻는 것은 거기에 SQL 문을 해부 할 수있는 도구가 있습니까 아니면 처음부터 내 자신을 작성해야합니까?SQL을 구현하는 C# 사용자 정의 데이터베이스 엔진

미리 도움을 청하십시오!

ALSO

(파이썬과 자바에 내 물건의 일부를 양도 할 수 있으므로 잠재적 인 답변은 C#을 제한 할 필요는 없다) : 그와 같은 현재의 모든 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/). 이러한 도구는 문법을 사용하여 렉서 및 파서 코드를 생성합니다. 그런 다음 해당 코드에 텍스트를 입력하여 DB를 구동하는 데 사용할 수있는 메모리 내 객체를 가져올 수 있습니다. –

답변

3

전체 데이터베이스 엔진은 매우 심각한 사업입니다. 다음 주에는 완벽한 엔진을 가지고 앉아 앉아서 SQL 파서를 작성하려고합니다. 즉, 엔진에서 기능이 지원되므로 파서에 기능을 추가하는 것입니다.

나는 이것이 가능한 한 빨리하는 것이 아니라 최대한 빨리 일하기를 원한다고 생각합니다. 필자는 SQL 파서를 작성하는 것이 프로젝트의 가장 좋은 부분 중 하나라고 생각했습니다. 쿼리에 필요한 응답 시간이 RDBMS를 허용하지 않기 때문에 플랫 파일 데이터베이스 엔진으로 많은 작업을 수행했습니다. 가장 즐거운 비트 중 하나는 예를 들어 SQL에서 조각을 지원하는 것입니다. 응답 시간이 중요하지 않은 UI

내가 수행하는 구현은 평범한 구식 C이지만, 사실 내가 본 것부터 대부분의 관계형 데이터베이스는 주로 C로 주로 작성됩니다. 그리고 이러한 것들을 매우 저급 수준의 언어로 작성하는 것에 만족스러운 것이 있습니다.)

+0

그래, 그게 내 의도 야. 그러나 이전 작업을 살펴보면 어떻게해야하는지에 대한 아이디어를 얻을 수 있다고 생각했습니다. 나는 프로그래밍 게임을 처음 사용하기 때문에 .NET Framework에 의존하지 않는다는 아이디어가 마음에 들었지만 평범한 C 언어는 사용하지 못했습니다. 많은 작업입니다. – MReed

+0

아마도보기 싫은 곳이 있습니다. 가장 간단한 관계형 데이터베이스 구현 중 하나를 제공하는 SQLite. 경고를 받으십시오, 그것은 여전히 ​​아주 단순한 것에서 아주 먼 길입니다! http://www.sqlite.org/ – asc99c

+0

글쎄, 내가 찾고있는 것이 반드시 단순하지는 않다. 필자는 관계형 데이터베이스 아이디어에 대한 고유 한 접근법을 가지고 있으며 시간에 따라 전체 시스템을 만들 계획을 세우고 있습니다. 이것은 실제로 그것의 두 번째 반복입니다, 나는 처음부터 완전히 다시 시작했습니다 ... 귀하의 접근 방식은 무엇입니까? 사람들이 이것과 같은 문제를 토론하는 포럼이 있습니까? 나는 그것을 발견하지 못했습니다 ... – MReed

관련 문제