AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


A Generic and Portable Database API

Authors

; ; ;

Term

4. term

Publication year

2004

Abstract

Mange applikationsudviklere er stærkere i deres primære sprog (fx Java eller C++) end i SQL, det standardsprog der bruges til at arbejde med databaser. Når SQL-kode er spredt og ofte gentaget i en hel applikation, bliver testning tidskrævende og fejlbehæftet. For at løse dette foreslår vi et database-abstraktionslag: vi indkapsler SQL og databaseadgang bag en programmeringsgrænseflade (API), dvs. et sæt veldefinerede funktioner, som udviklere kan bruge. Vi designer og implementerer en generisk og portabel API, der undgår leverandørspecifikke funktioner (som fx Oracles indlejrede Java) og fokuserer på de mest almindelige behov i applikationsudvikling. Designet er modulært, så API’en kan udvides. Portabiliteten betyder, at den kan bruges på tværs af forskellige programmeringssprog og -paradigmer. Vi foreslår to varianter: en statisk API, der opfanger mange fejl ved kompilering (til gengæld med flere metoder), og en dynamisk API med færre metoder, hvor de fleste fejl først opdages ved kørsel. Derudover har vi designet og implementeret en generator, som i øjeblikket kan skabe en PL/SQL-specifik API til Oracle-platformen. Den genererede API dækker de mest almindelige funktioner i udvikling af databaseapplikationer.

Many application developers are more comfortable with their main language (e.g., Java or C++) than with SQL, the standard language for working with databases. When SQL code is scattered and repeated across an application, testing becomes slow and error-prone. To address this, we propose a database abstraction layer: we encapsulate SQL and database access behind an Application Programming Interface (API)—a set of well-defined functions developers can call. We design and implement a generic and portable API that avoids vendor-specific features (such as Oracle’s embedded Java) and focuses on the most commonly needed functionality in application development. The design is modular to allow extensions. Portability here means it can be used across different programming languages and paradigms. We present two variants: a static API that catches many errors at compile time (with more methods as a trade-off) and a dynamic API with fewer methods, where most errors are detected at run time. We also design and implement a generator that currently produces a PL/SQL-specific API for the Oracle platform. The generated API covers the most common tasks in database application development.

[This abstract was generated with the help of AI]