Combining language and database advances in an object-oriented development environment
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Issues in the design of object-oriented database programming languages
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Types and persistence in database programming languages
ACM Computing Surveys (CSUR)
Fully static dimensional analysis with C++
ACM SIGPLAN Notices
C/C++ Users Journal
Generic programming and the STL: using and extending the C++ Standard Template Library
Generic programming and the STL: using and extending the C++ Standard Template Library
Programming pearls: little languages
Communications of the ACM
Some high level language constructs for data of type relation
ACM Transactions on Database Systems (TODS)
SQLJ Part 1: SQL routines using the Java programming language
ACM SIGMOD Record
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A relational model of data for large shared data banks
Communications of the ACM
Oracle: The Complete Reference,Electronic Edition
Oracle: The Complete Reference,Electronic Edition
Using Microsoft SQL Server 7.0
Using Microsoft SQL Server 7.0
SQL: The Complete Reference
Fully Integrated Data Environments: Persistent Programming Languages, Object Stores, and Programmingenvironments
Standard C++ Bible
Mysql Reference Manual
DB2: The Complete Reference
Visual C++(R).Net: The Complete Reference
Visual C++(R).Net: The Complete Reference
Making smalltalk a database system
SIGMOD '84 Proceedings of the 1984 ACM SIGMOD international conference on Management of data
Proceedings of the 2004 ACM symposium on Applied computing
Applied Data Structures with C++
Applied Data Structures with C++
Static Checking of Dynamically Generated Queries in Database Applications
Proceedings of the 26th International Conference on Software Engineering
XJ: integration of XML processing into java
Proceedings of the 13th international World Wide Web conference on Alternate track papers & posters
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
SQL DOM: compile time checking of dynamic SQL statements
Proceedings of the 27th international conference on Software engineering
Safe query objects: statically typed objects as remotely executable queries
Proceedings of the 27th international conference on Software engineering
AMNESIA: analysis and monitoring for NEutralizing SQL-injection attacks
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
LINQ: reconciling object, relations and XML in the .NET framework
Proceedings of the 2006 ACM SIGMOD international conference on Management of data
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 5th international conference on Generative programming and component engineering
Generative Programming and Component Engineering 2006 (co-located with OOPSLA 2006 Conference)
Adding domain-specific and general purpose language features to Java with the Java language extender
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Domain specific embedded compilers
DSL'99 Proceedings of the 2nd conference on Conference on Domain-Specific Languages - Volume 2
Compile time symbolic derivation with C++ templates
COOTS'98 Proceedings of the 4th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 4
Precise analysis of string expressions
SAS'03 Proceedings of the 10th international conference on Static analysis
Certifiable program generation
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
AOP++: a generic aspect-oriented programming framework in c++
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Implementation of a Finite State Machine with Active Libraries in C++
Generative and Transformational Techniques in Software Engineering II
Toward foundations for type-reflective metaprogramming
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Domain-specific language integration with compile-time parser generator library
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
C++ metastring library and its applications
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
Functional Extensions to the Boost Metaprogram Library
Electronic Notes in Theoretical Computer Science (ENTCS)
Nested Lambda Expressions with Let Expressions in C++ Template Metaprograms
Electronic Notes in Theoretical Computer Science (ENTCS)
ScalaQL: language-integrated database queries for scala
SLE'09 Proceedings of the Second international conference on Software Language Engineering
Hi-index | 0.00 |
Most software applications use a relational database for data management and storage. Interaction with such a database is often done by letting the program construct strings with valid SQL statements, which are then sent for execution to the database engine. The fact that these statements are only checked for correctness at runtime is a source for many potential problems such as type and syntax errors and vulnerability to injection attacks. The ARARAT system presented here offers a method for dealing with these predicaments, by coercing the host C++ compiler to do the necessary checks of the generated strings. A library of templates and preprocessor directives effectively extends C++ with a little language representing an augmented relational algebra formalism. Type checking of this language extension, carried out by our template library, assures, at compile-time, the correctness and safety of the generated SQL strings. That is to say that all SQL statements constructed by the system are syntactically correct, legal with respect to the database schema, and immune to injection attacks. Standard techniques (e.g., "expression templates") for compile time representation of symbolic structures, are enhanced in our system to support a type system (featuring structural equivalence) and a symbol table lookup of the symbolic structure. Our work may also open the way for embedding other domain specific languages in C++. The system provides also initial support for the task of defining C++ data structures required for storing the results returned by database queries. An optional pre-processor can be used to define the database scheme to the C++ program.