Seminar Datenbanksysteme

Size: px
Start display at page:

Download "Seminar Datenbanksysteme"

Transcription

1 University of Applied Sciences HTW Chur Master of Science in Engineering (MSE) Seminar Datenbanksysteme The LINQ-Approach in Java Student: Norman Süsstrunk Tutor: Martin Studer 18 th October 2010

2 Seminar Datenbanksysteme : The LINQ-Approach in Java 2 Abstract LINQ is a component in the.net framework that enables writing SQL-querys in the programming language itself. This approach became quite popular in.net and is seen as a big advantage over other popular programming languages like Java. The popularity of LINQ has led to a lot of research how LINQ could be implemented in Java. There exist several projects that try to implement the LINQ-Approach in Java. In this paper, there will be first a discussion what the key benefits of LINQ are. Next it presents two projects that enable some sort of LINQ-capability in Java. The frameworks will be analysed in its implementation and their capabilities. Approval Date/Signature Tutor: Date/Signature Student:

3 Seminar Datenbanksysteme : The LINQ-Approach in Java 3 Table of contents Abstract... 2 Approval Introduction to LINQ What is LINQ? The LINQ Providers LINQ Example Key benefits of LINQ Actual Implementations of LINQ for Java JaQU sbql4j Conclusion Bibliography... 16

4 Seminar Datenbanksysteme : The LINQ-Approach in Java 4 1 Introduction to LINQ 1.1 What is LINQ? LINQ is a component of the.net-framework and stands for Language Integrated Query. The syntax of LINQ is based on the commands of the SQL query language such as "select", "from" and "where". This enables writing query expression in the programming itself. LINQ offers the benefits of both compile time checking and simplified development of query expressions. LINQ provides almost all standart query operators such as Select Where SelectMany Sum / Min / Max / Average Aggregate Join / GroupJoin and many more LINQ can be used to query all sort of data structures is not limited to relational databases like MS SQL Server or MySQL. This is enabled by the LINQ providers wich are presented in the next section. 1.2 The LINQ Providers A LINQ query retrieves data from a data source. In.NET, any type implementing IEnumerable or IEnumerable<T> is a valid source of data and is known as a queryable type. We can define our own custom types implementing IEnumerable<T>, and LINQ will work on our custom types with no additional modifications. A LINQ provider can be descriped as a connector for LINQ to query data that is not inside a queryable type. With LINQ providers, it is possible to query data inside almost any database server (SQL Server, MySQL etc.), inside XML, inside XSD, inside Twitter, inside Google, etc.

5 Seminar Datenbanksysteme : The LINQ-Approach in Java LINQ Example Listing 1 is an example written in C# showing the key features of LINQ: public void printsoldoutproducts() { List<Product> products = GetProductList(); var soldoutproducts = from p in products where p.unitsinstock == 0 select p; Console.WriteLine("Sold out products:"); foreach (var product in soldoutproducts { Console.WriteLine("{0 is sold out!", product.productname); Listing 1 : A simple query in LINQ Listing 1 shows how a query is expressed with LINQ. The query filters out all products wich aren t in stock anymore. If we translate this LINQ expression in a SQL query, the query would look like this: SELECT * FROM PRODUCTS P WHERE P.UNITS_IN_STOCK = Key benefits of LINQ Listing 1 shows a typical implementation of an execution of a simple SQL query in a modern programming language. The example is written in Java. try { Statement stmt = connection.createstatement(); String sql = "SELECT * FROM PRODUCTS P WHERE P.UNITS_IN_STOCK = 0"; stmt.executeupdate(sql); catch (SQLException e) { //... Listing 2 : typical way to execute an sql query in a programming language. The code shown here is written in Java The SQL-statement is typically stored in a string variable. Then the query will be executed on the connection to the database. This implementation has the following drawbacks:

6 Seminar Datenbanksysteme : The LINQ-Approach in Java 6 We have to assure that the query will be syntactically correct. The compiler of the programming language can t detect wrong querys as they are embedded in strings. There is no way to refactor the query with a refactoring tool. For example, if we modify the relational model with a refactoring tool, the tool can t consider querys that are stored in strings and are concerned to the change of the relational model. SQL querys only work with relational databases. We can t express a query for an array in Java. In.NET and its LINQ-feature, querys are an integral part of the language. This has the following advantages: The compiler checks the syntax of queries at compile time. No syntactically wrong query will execute on a database. If the queried data structures change, the query expression will be checked if it is still valid. For example, if some tables in a database change its structure, the querys can be checked if they still work with the altered table structure. In an integrated development environment (IDE), writing querys will be simplified because the IDE can autocomplete the query and thus writing querys can be much faster. An IDE can automatically refactor a query if for example the classes involved in the query are being refactored. Mapping to domain objects is done by LINQ Possibility to debug a query in the IDE. That s not possible with a query stored in a string. The querys can be optimized by the LINQ-providers.

7 Seminar Datenbanksysteme : The LINQ-Approach in Java 7 2 Actual Implementations of LINQ for Java The popularity of LINQ has led to attempts integrating LINQ in other programming languages. Such projects exists for Java, PHP, Javascript and others. Most of the projects try to simulate LINQ with their existing language components. To really enable the feautures of LINQ in a programming language, the programming language itself has to be extended. We have seen in the LINQ example in.net at the beginning, that expressing querys is an integrated part of the programmin language itself. There are ongoing discussions in the Internet to integrate LINQ into the Java programming language[6]. By now, it seems that there are no plans to integrate LINQ in Java. At this time, no Java language request (JSR) concerning LINQ can be found. In the next sections, there will be presented two projects for the Java language wich try to simulate writing integrated querys. They work with two different approaches. The projects where analyzed by the following aspects: How a query can be expressed The actual implementation Usability of the frameworks. 2.1 JaQU JaQU is a subproject of the developer of the popular H2 database engine and stands for Java Query. In listing 3, we see how the LINQ query from the beginning example is written with JaQU: Product p = new Product(); List<Product> soldoutproducts = db.from(p).where(p.unitsinstock).is(0).select(); Listing 3 : The query from listing 1 implemented with JaQU The class Product is a model class that maps to to a table Product in a H2 database. The reference db holds a connection to the H2 database. The statement in Listing 3 stands for the following SQL query: SELECT * FROM PRODUCTS P WHERE P.UNITS_IN_STOCK = 0 Listing 4 : The sql representation of the statement in listing 3 It can be see that the query is composed with method calls. So the query isn t expressed with keywords as this can be done in C# with LINQ. A lot of the key advantages that where stated for LINQ also can be seen here. Querys are expressed in a natural and object-oriented way.

8 Seminar Datenbanksysteme : The LINQ-Approach in Java 8 The query statements are easy to write with auto completion Code can be refactored It s type save because the API is strongly based on generics. Implementation of JaQU Running the example in listing 3 results in the following steps inside the JaQU-framework: 1. Creating and mapping the table to the model class In the example in listing 3, the query is performed on a list with objects of the type Product. The class Product will be inspected to create a SQL query that creates a table with the name Person. The columns of the table are based on the fields of the class Person. Listing 5 shows the field definitions of the class Product. Listing 6 shows the resulting SQL query that creates the table Product. public class Product implements Table { // public Integer productid; public String productname; public String category; public Double unitprice; public Integer unitsinstock; Listing 5 : Field definitions of the class Products CREATE TABLE IF NOT EXISTS Product ( productid INT, productname VARCHAR, category VARCHAR(255), unitprice DOUBLE, unitsinstock INT, PRIMARY KEY(productId) ) Listing 6 : Query to create the table for the class Product The framework then stores the relation of the model classes to its corresponding tables in a internal hashmap.

9 Seminar Datenbanksysteme : The LINQ-Approach in Java 9 2. Creating the SQL query The SQL query now will be composed based on the method calls where(..).is(..).select(). The query is being constructed step by step, the result is a string holding the complete query. Listing 7 shows that the query will be constructed with strings representing parts of a SQL query. SQLStatement prepare(sqlstatement selectlist, boolean distinct) { SQLStatement stat = selectlist; String selectsql = stat.getsql(); stat.setsql(""); stat.appendsql("select "); if (distinct) { stat.appendsql("distinct "); stat.appendsql(selectsql); stat.appendsql(" FROM "); from.appendsql(stat); for (SelectTable join : joins) { join.appendsqlasjoin(stat, this); appendwhere(stat); if (groupbyexpressions!= null) { stat.appendsql(" GROUP BY "); int i = 0; for (Object obj : groupbyexpressions) { if (i++ > 0) { stat.appendsql(", "); appendsql(stat, obj); stat.appendsql(" "); if (!orderbylist.isempty()) { stat.appendsql(" ORDER BY "); int i = 0; for (OrderExpression o : orderbylist) { if (i++ > 0) { stat.appendsql(", "); o.appendsql(stat); stat.appendsql(" ");

10 Seminar Datenbanksysteme : The LINQ-Approach in Java 10 return stat; Listing 7 : Method to construct the query string The documentation of JaQU states that JaQU is testet with the H2 database but it should work with every database that supports JDBC. We can see above that JaQU translates the query expressed by the method calls into SQL querys stored in strings. That limits the use of JaQU to classic databases. Querying collections like arrays or lists isn t possible with that approach. As a conclusion we can say that JaQU just simplifies the generation of SQL querys. The code that tests the framework shows that almost all kinds of querys can be realized. Querys with joins and complex conditions are demonstrated and seem to work flawlessly.

11 Seminar Datenbanksysteme : The LINQ-Approach in Java sbql4j SBQL4J is another framework that enables to express a query in the same way like LINQ. SBQL4J basically works with a preprocessor that parses the querys and translates them into Java code. Here s our example from the beginning written for sbql4j: /** * This sample uses where to find all products that are out of stock. */ public void linq2() { List<Product> products = getproductlist(); List<Product> soldoutproducts = #{ products where unitsinstock == 0 ; System.out.println("Sold out products:"); for(product product : soldoutproducts) { System.out.printf ("%s is sold out!\n", product.productname); Listing 8 : The query from listing 1 implemented with sbql4j This code can t be compiled with a java compiler as it uses the keyword where that isn t a part of the java programming language. SBQL4J is implemented based on the theory of the so-called stacked based query language (SBQL). The conceptual architecture of SBQL involves the following elements: 1 1. integrated development environment (IDE) for preparing source SBQL programs. 2. a parser which generates a query syntax tree 3. an interpreter which recursively traverses a syntax tree producing the result of a query or of a program. To make such an expression work with sbql4j, the following steps are needed: 1. All the the code that contain integrated querys must be written in a specific file format with the ending.s4j. As we can see in the figure 1

12 Seminar Datenbanksysteme : The LINQ-Approach in Java 12 below, not even syntax highlighting works in a typical java ide like eclipse. It s obvious that either autocompletion nor check of the code by the compiler is done while writing the code in the ide. 2. After the code is written, a ant task has to be run that calls the API to perform the preprocessing of the.s4j-files and finally generates java code wich can be used in further client code.

13 Seminar Datenbanksysteme : The LINQ-Approach in Java 13 In Listing 9, we can see the generated code from Listing 8. The query was translated in a loop where every product from the productlist is analyzed of the demanded properties that originate from the where-condition in the query. public class LinqComparison_SbqlQuery1 { private List< Product> products; public LinqComparison_SbqlQuery1(List< Product> products) { this.products = products; // query='products where unitsinstock == 0' public List<Product> executequery() { List<Product> _queryresult = new ArrayList<Product>(); int _whereloopindex = 0; for (Product _whereel : products) { Boolean _equalsresult = OperatorUtils.equalsSafe (_whereel.unitsinstock, 0); if (_equalsresult) { _queryresult.add(_whereel); _whereloopindex++; return _queryresult; Listing 9 : Generated code after preprocessing through sbql4j

14 Seminar Datenbanksysteme : The LINQ-Approach in Java 14 What happens if we write a query that is syntactilly correct but has a condition on a property that doesn t exist? In listing 10, a second condition on the fictional property test is added to our integrated query. public void linq2() { List<Product> products = getproductlist(); List<Product> soldoutproducts = #{ ; products where unitsinstock == 0 and test = 0 System.out.println("Sold out products:"); for(product product : soldoutproducts) { System.out.printf ("%s is sold out!\n", product.productname); Listing 10 : query that references a field that doesn t exist After running ant, the following outputs in the console [sbql_pre] LinqComparison.s4j:152: Name test cannot be resolved [sbql_pre] where unitsinstock == 0 and test == 0 It recognizes that the field test in the model class Product doesn t exists. Querys that are syntactically wrong are also detected.

15 Seminar Datenbanksysteme : The LINQ-Approach in Java 15 3 Conclusion The popularity of LINQ is no surprise. LINQ enables the expression of queries for any data structures integrated in the language. Because LINQ is an integrated part of the language, the compiler can detect errors in querys and tools for generating and refactoring of queries can be used. This was previously not possible with querys stored in strings. The two projects SBQL4j and JaQU show how one can express querys similar to LINQ in Java. The underlying concepts, however, limit the application of the frameworks. JaQU just generates querys for classic databases and doesn t work with other datastructures. SBQL4J enables real language integrated querys. But it requires its own file format and the code must be preprocessed. The fileformat isn t supportet by java development tools so writing querys isn t that fluent like in.net. LINQ in Java only becomes real if it the java language will be extended. It remains to be seen if Sun will pick up LINQ as a language feature in Java und how it will be implemented.

16 Seminar Datenbanksysteme : The LINQ-Approach in Java 16 4 Bibliography [1] LINQ is the best option for a future Java query API йил (accessed 2010 йил 21-09). [2] Wikipedia. LINQ - Wikipedia. (accessed 2010 йил 21-10). [3] Albahari, Joseph, and Ben Albahari. LINQ Pocket Reference. O'Reilly Media, [4] JaQu. JaQu. (accessed 2010 йил 21-10). [5] sbql.pl. Stack-Based Architecture (SBA) and Stack-Based Query Language (SBQL) (accessed ). [6] stackoverflow. Discussion "LINQ for Java tool". (accessed 2010 йил 21-10).

How to Improve Database Connectivity With the Data Tools Platform. John Graham (Sybase Data Tooling) Brian Payton (IBM Information Management)

How to Improve Database Connectivity With the Data Tools Platform. John Graham (Sybase Data Tooling) Brian Payton (IBM Information Management) How to Improve Database Connectivity With the Data Tools Platform John Graham (Sybase Data Tooling) Brian Payton (IBM Information Management) 1 Agenda DTP Overview Creating a Driver Template Creating a

More information

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases Paul L. Bergstein, Priyanka Gariba, Vaibhavi Pisolkar, and Sheetal Subbanwad Dept. of Computer and Information Science,

More information

Facebook Twitter YouTube Google Plus Website Email

Facebook Twitter YouTube Google Plus Website Email PHP MySQL COURSE WITH OOP COURSE COVERS: PHP MySQL OBJECT ORIENTED PROGRAMMING WITH PHP SYLLABUS PHP 1. Writing PHP scripts- Writing PHP scripts, learn about PHP code structure, how to write and execute

More information

CSCI110 Exercise 4: Database - MySQL

CSCI110 Exercise 4: Database - MySQL CSCI110 Exercise 4: Database - MySQL The exercise This exercise is to be completed in the laboratory and your completed work is to be shown to the laboratory tutor. The work should be done in week-8 but

More information

SQLMutation: A tool to generate mutants of SQL database queries

SQLMutation: A tool to generate mutants of SQL database queries SQLMutation: A tool to generate mutants of SQL database queries Javier Tuya, Mª José Suárez-Cabal, Claudio de la Riva University of Oviedo (SPAIN) {tuya cabal claudio} @ uniovi.es Abstract We present a

More information

C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.

C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln. Koln C#5.0 IN A NUTSHELL Fifth Edition Joseph Albahari and Ben Albahari O'REILLY Beijing Cambridge Farnham Sebastopol Tokyo Table of Contents Preface xi 1. Introducing C# and the.net Framework 1 Object

More information

Industrial Programming

Industrial Programming Industrial Programming Lecture 7: Database access in C# using LINQ Industrial Programming 1 ADO.NET ADO.NET provides a direct interface to a database. The interface is database-specific. ADO.NET uses a

More information

Visual Basic. murach's TRAINING & REFERENCE

Visual Basic. murach's TRAINING & REFERENCE TRAINING & REFERENCE murach's Visual Basic 2008 Anne Boehm lbm Mike Murach & Associates, Inc. H 1-800-221-5528 (559) 440-9071 Fax: (559) 440-0963 murachbooks@murach.com www.murach.com Contents Introduction

More information

WEB DEVELOPMENT COURSE (PHP/ MYSQL)

WEB DEVELOPMENT COURSE (PHP/ MYSQL) WEB DEVELOPMENT COURSE (PHP/ MYSQL) COURSE COVERS: HTML 5 CSS 3 JAVASCRIPT JQUERY BOOTSTRAP 3 PHP 5.5 MYSQL SYLLABUS HTML5 Introduction to HTML Introduction to Internet HTML Basics HTML Elements HTML Attributes

More information

Beginning C# 5.0. Databases. Vidya Vrat Agarwal. Second Edition

Beginning C# 5.0. Databases. Vidya Vrat Agarwal. Second Edition Beginning C# 5.0 Databases Second Edition Vidya Vrat Agarwal Contents J About the Author About the Technical Reviewer Acknowledgments Introduction xviii xix xx xxi Part I: Understanding Tools and Fundamentals

More information

Skills for Employment Investment Project (SEIP)

Skills for Employment Investment Project (SEIP) Skills for Employment Investment Project (SEIP) Standards/ Curriculum Format for Web Application Development Using DOT Net Course Duration: Three Months 1 Course Structure and Requirements Course Title:

More information

1 File Processing Systems

1 File Processing Systems COMP 378 Database Systems Notes for Chapter 1 of Database System Concepts Introduction A database management system (DBMS) is a collection of data and an integrated set of programs that access that data.

More information

Programming Database lectures for mathema

Programming Database lectures for mathema Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$

More information

Detecting (and even preventing) SQL Injection Using the Percona Toolkit and Noinject!

Detecting (and even preventing) SQL Injection Using the Percona Toolkit and Noinject! Detecting (and even preventing) SQL Injection Using the Percona Toolkit and Noinject! Justin Swanhart Percona Live, April 2013 INTRODUCTION 2 Introduction 3 Who am I? What do I do? Why am I here? The tools

More information

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014) CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014) CSTA Website Oracle Website Oracle Contact http://csta.acm.org/curriculum/sub/k12standards.html https://academy.oracle.com/oa-web-introcs-curriculum.html

More information

A Brief Introduction to MySQL

A Brief Introduction to MySQL A Brief Introduction to MySQL by Derek Schuurman Introduction to Databases A database is a structured collection of logically related data. One common type of database is the relational database, a term

More information

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm

More information

COSC344 Database Theory and Applications. Java and SQL. Lecture 12

COSC344 Database Theory and Applications. Java and SQL. Lecture 12 COSC344 Database Theory and Applications Lecture 12: Java and SQL COSC344 Lecture 12 1 Last Lecture Trigger Overview This Lecture Java & SQL Source: Lecture notes, Textbook: Chapter 12 JDBC documentation

More information

database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia smith@backendmedia.com

database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia smith@backendmedia.com Lukas Smith database abstraction layers in PHP BackendMedia 1 Overview Introduction Motivation PDO extension PEAR::MDB2 Client API SQL syntax SQL concepts Result sets Error handling High level features

More information

SQL SELECT Query: Intermediate

SQL SELECT Query: Intermediate SQL SELECT Query: Intermediate IT 4153 Advanced Database J.G. Zheng Spring 2012 Overview SQL Select Expression Alias revisit Aggregate functions - complete Table join - complete Sub-query in where Limiting

More information

Chapter 9 Java and SQL. Wang Yang wyang@njnet.edu.cn

Chapter 9 Java and SQL. Wang Yang wyang@njnet.edu.cn Chapter 9 Java and SQL Wang Yang wyang@njnet.edu.cn Outline Concern Data - File & IO vs. Database &SQL Database & SQL How Connect Java to SQL - Java Model for Database Java Database Connectivity (JDBC)

More information

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code 1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons

More information

Database Access from a Programming Language: Database Access from a Programming Language

Database Access from a Programming Language: Database Access from a Programming Language Database Access from a Programming Language: Java s JDBC Werner Nutt Introduction to Databases Free University of Bozen-Bolzano 2 Database Access from a Programming Language Two Approaches 1. Embedding

More information

Database Access from a Programming Language:

Database Access from a Programming Language: Database Access from a Programming Language: Java s JDBC Werner Nutt Introduction to Databases Free University of Bozen-Bolzano 2 Database Access from a Programming Language Two Approaches 1. Embedding

More information

The Different Types of Search and Execution Systems

The Different Types of Search and Execution Systems Query Engine A Pattern for Performing Dynamic Searches in Information Systems Tim Wellhausen kontakt@tim-wellhausen.de http://www.tim-wellhausen.de Jan 24, 2006 Abstract: This paper presents an architecture

More information

DataDirect XQuery Technical Overview

DataDirect XQuery Technical Overview DataDirect XQuery Technical Overview Table of Contents 1. Feature Overview... 2 2. Relational Database Support... 3 3. Performance and Scalability for Relational Data... 3 4. XML Input and Output... 4

More information

Evaluation. Copy. Evaluation Copy. Chapter 7: Using JDBC with Spring. 1) A Simpler Approach... 7-2. 2) The JdbcTemplate. Class...

Evaluation. Copy. Evaluation Copy. Chapter 7: Using JDBC with Spring. 1) A Simpler Approach... 7-2. 2) The JdbcTemplate. Class... Chapter 7: Using JDBC with Spring 1) A Simpler Approach... 7-2 2) The JdbcTemplate Class... 7-3 3) Exception Translation... 7-7 4) Updating with the JdbcTemplate... 7-9 5) Queries Using the JdbcTemplate...

More information

ADO.NET. Industrial Programming. Structure of database access. ADO.NET Example. Lecture 7: Database access in C# using LINQ

ADO.NET. Industrial Programming. Structure of database access. ADO.NET Example. Lecture 7: Database access in C# using LINQ ADO.NET Industrial Programming Lecture 7: Database access in C# using LINQ Industrial Programming 1 ADO.NET provides a direct interface to a database. The interface is database-specific. ADO.NET uses a

More information

Introduction to SQL for Data Scientists

Introduction to SQL for Data Scientists Introduction to SQL for Data Scientists Ben O. Smith College of Business Administration University of Nebraska at Omaha Learning Objectives By the end of this document you will learn: 1. How to perform

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

Querying MongoDB without programming using FUNQL

Querying MongoDB without programming using FUNQL Querying MongoDB without programming using FUNQL FUNQL? Federated Unified Query Language What does this mean? Federated - Integrates different independent stand alone data sources into one coherent view

More information

Course Objectives. Database Applications. External applications. Course Objectives Interfacing. Mixing two worlds. Two approaches

Course Objectives. Database Applications. External applications. Course Objectives Interfacing. Mixing two worlds. Two approaches Course Objectives Database Applications Design Construction SQL/PSM Embedded SQL JDBC Applications Usage Course Objectives Interfacing When the course is through, you should Know how to connect to and

More information

DBMS / Business Intelligence, SQL Server

DBMS / Business Intelligence, SQL Server DBMS / Business Intelligence, SQL Server Orsys, with 30 years of experience, is providing high quality, independant State of the Art seminars and hands-on courses corresponding to the needs of IT professionals.

More information

What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World

What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World COSC 304 Introduction to Systems Introduction Dr. Ramon Lawrence University of British Columbia Okanagan ramon.lawrence@ubc.ca What is a database? A database is a collection of logically related data for

More information

JDBC (Java / SQL Programming) CS 377: Database Systems

JDBC (Java / SQL Programming) CS 377: Database Systems JDBC (Java / SQL Programming) CS 377: Database Systems JDBC Acronym for Java Database Connection Provides capability to access a database server through a set of library functions Set of library functions

More information

Chapter 13. Introduction to SQL Programming Techniques. Database Programming: Techniques and Issues. SQL Programming. Database applications

Chapter 13. Introduction to SQL Programming Techniques. Database Programming: Techniques and Issues. SQL Programming. Database applications Chapter 13 SQL Programming Introduction to SQL Programming Techniques Database applications Host language Java, C/C++/C#, COBOL, or some other programming language Data sublanguage SQL SQL standards Continually

More information

Real SQL Programming 1

Real SQL Programming 1 Real 1 We have seen only how SQL is used at the generic query interface an environment where we sit at a terminal and ask queries of a database. Reality is almost always different: conventional programs

More information

LINQ: Language Integrated Query. ST Colloquium, 2008-05-15 Tom Lokhorst

LINQ: Language Integrated Query. ST Colloquium, 2008-05-15 Tom Lokhorst LINQ: Language Integrated Query ST Colloquium, 2008-05-15 Tom Lokhorst Brief example Brief example int[] nrs = {2, 3, 9, 1, 21, 3, 42}; Brief example int[] nrs = {2, 3, 9, 1, 21, 3, 42}; var q = from n

More information

CS346: Database Programming. http://warwick.ac.uk/cs346

CS346: Database Programming. http://warwick.ac.uk/cs346 CS346: Database Programming http://warwick.ac.uk/cs346 1 Database programming Issue: inclusionofdatabasestatementsinaprogram combination host language (general-purpose programming language, e.g. Java)

More information

Language Interface for an XML. Constructing a Generic Natural. Database. Rohit Paravastu

Language Interface for an XML. Constructing a Generic Natural. Database. Rohit Paravastu Constructing a Generic Natural Language Interface for an XML Database Rohit Paravastu Motivation Ability to communicate with a database in natural language regarded as the ultimate goal for DB query interfaces

More information

Integrating Big Data into the Computing Curricula

Integrating Big Data into the Computing Curricula Integrating Big Data into the Computing Curricula Yasin Silva, Suzanne Dietrich, Jason Reed, Lisa Tsosie Arizona State University http://www.public.asu.edu/~ynsilva/ibigdata/ 1 Overview Motivation Big

More information

How to simplify software development with high level programming languages? Pierre-Alexandre Voye - ontologiae@gmail.com

How to simplify software development with high level programming languages? Pierre-Alexandre Voye - ontologiae@gmail.com How to simplify software development with high level programming languages? Pierre-Alexandre Voye - ontologiae@gmail.com Projects structures - Both in proprietary and open source project, steps are the

More information

Eclipse Web Tools Platform. Naci Dai (Eteration), WTP JST Lead

Eclipse Web Tools Platform. Naci Dai (Eteration), WTP JST Lead Eclipse Web Tools Platform Naci Dai (Eteration), WTP JST Lead 2007 by Naci Dai and Eteration A.S. ; made available under the EPL v1.0 Istanbul April 30, 2007 Outline WTP Organization JSF Overview and Demo

More information

No no-argument constructor. No default constructor found

No no-argument constructor. No default constructor found Every software developer deals with bugs. The really tough bugs aren t detected by the compiler. Nasty bugs manifest themselves only when executed at runtime. Here is a list of the top ten difficult and

More information

Real-time Streaming Analysis for Hadoop and Flume. Aaron Kimball odiago, inc. OSCON Data 2011

Real-time Streaming Analysis for Hadoop and Flume. Aaron Kimball odiago, inc. OSCON Data 2011 Real-time Streaming Analysis for Hadoop and Flume Aaron Kimball odiago, inc. OSCON Data 2011 The plan Background: Flume introduction The need for online analytics Introducing FlumeBase Demo! FlumeBase

More information

DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES

DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES by Çağatay YILDIRIM June, 2008 İZMİR CONTENTS Page PROJECT EXAMINATION RESULT FORM...ii ACKNOWLEDGEMENTS...iii ABSTRACT... iv

More information

CHAPTER 6: TECHNOLOGY

CHAPTER 6: TECHNOLOGY Chapter 6: Technology CHAPTER 6: TECHNOLOGY Objectives Introduction The objectives are: Review the system architecture of Microsoft Dynamics AX 2012. Describe the options for making development changes

More information

Database Programming. Week 10-2. *Some of the slides in this lecture are created by Prof. Ian Horrocks from University of Oxford

Database Programming. Week 10-2. *Some of the slides in this lecture are created by Prof. Ian Horrocks from University of Oxford Database Programming Week 10-2 *Some of the slides in this lecture are created by Prof. Ian Horrocks from University of Oxford SQL in Real Programs We have seen only how SQL is used at the generic query

More information

DIPLOMA IN WEBDEVELOPMENT

DIPLOMA IN WEBDEVELOPMENT DIPLOMA IN WEBDEVELOPMENT Prerequisite skills Basic programming knowledge on C Language or Core Java is must. # Module 1 Basics and introduction to HTML Basic HTML training. Different HTML elements, tags

More information

Java the UML Way: Integrating Object-Oriented Design and Programming

Java the UML Way: Integrating Object-Oriented Design and Programming Java the UML Way: Integrating Object-Oriented Design and Programming by Else Lervik and Vegard B. Havdal ISBN 0-470-84386-1 John Wiley & Sons, Ltd. Table of Contents Preface xi 1 Introduction 1 1.1 Preliminaries

More information

XML Processing and Web Services. Chapter 17

XML Processing and Web Services. Chapter 17 XML Processing and Web Services Chapter 17 Textbook to be published by Pearson Ed 2015 in early Pearson 2014 Fundamentals of http://www.funwebdev.com Web Development Objectives 1 XML Overview 2 XML Processing

More information

Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms

Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms Mohammed M. Elsheh and Mick J. Ridley Abstract Automatic and dynamic generation of Web applications is the future

More information

SimWebLink.NET Remote Control and Monitoring in the Simulink

SimWebLink.NET Remote Control and Monitoring in the Simulink SimWebLink.NET Remote Control and Monitoring in the Simulink MARTIN SYSEL, MICHAL VACLAVSKY Department of Computer and Communication Systems Faculty of Applied Informatics Tomas Bata University in Zlín

More information

09336863931 : provid.ir

09336863931 : provid.ir provid.ir 09336863931 : NET Architecture Core CSharp o Variable o Variable Scope o Type Inference o Namespaces o Preprocessor Directives Statements and Flow of Execution o If Statement o Switch Statement

More information

CS 377 Database Systems SQL Programming. Li Xiong Department of Mathematics and Computer Science Emory University

CS 377 Database Systems SQL Programming. Li Xiong Department of Mathematics and Computer Science Emory University CS 377 Database Systems SQL Programming Li Xiong Department of Mathematics and Computer Science Emory University 1 A SQL Query Joke A SQL query walks into a bar and sees two tables. He walks up to them

More information

COSC 6397 Big Data Analytics. 2 nd homework assignment Pig and Hive. Edgar Gabriel Spring 2015

COSC 6397 Big Data Analytics. 2 nd homework assignment Pig and Hive. Edgar Gabriel Spring 2015 COSC 6397 Big Data Analytics 2 nd homework assignment Pig and Hive Edgar Gabriel Spring 2015 2 nd Homework Rules Each student should deliver Source code (.java files) Documentation (.pdf,.doc,.tex or.txt

More information

Web Service Facade for PHP5. Andreas Meyer, Sebastian Böttner, Stefan Marr

Web Service Facade for PHP5. Andreas Meyer, Sebastian Böttner, Stefan Marr Web Service Facade for PHP5 Andreas Meyer, Sebastian Böttner, Stefan Marr Agenda Objectives and Status Architecture Framework Features WSD Generator PHP5 eflection API Security Aspects used approach planned

More information

Customer Bank Account Management System Technical Specification Document

Customer Bank Account Management System Technical Specification Document Customer Bank Account Management System Technical Specification Document Technical Specification Document Page 1 of 15 Table of Contents Contents 1 Introduction 3 2 Design Overview 4 3 Topology Diagram.6

More information

ABSTRACT 1. INTRODUCTION. Kamil Bajda-Pawlikowski kbajda@cs.yale.edu

ABSTRACT 1. INTRODUCTION. Kamil Bajda-Pawlikowski kbajda@cs.yale.edu Kamil Bajda-Pawlikowski kbajda@cs.yale.edu Querying RDF data stored in DBMS: SPARQL to SQL Conversion Yale University technical report #1409 ABSTRACT This paper discusses the design and implementation

More information

Developing SQL and PL/SQL with JDeveloper

Developing SQL and PL/SQL with JDeveloper Seite 1 von 23 Developing SQL and PL/SQL with JDeveloper Oracle JDeveloper 10g Preview Technologies used: SQL, PL/SQL An Oracle JDeveloper Tutorial September 2003 Content This tutorial walks through the

More information

WEB APPLICATION DEVELOPMENT. UNIT I J2EE Platform 9

WEB APPLICATION DEVELOPMENT. UNIT I J2EE Platform 9 UNIT I J2EE Platform 9 Introduction - Enterprise Architecture Styles - J2EE Architecture - Containers - J2EE Technologies - Developing J2EE Applications - Naming and directory services - Using JNDI - JNDI

More information

LSINF1124 Projet de programmation

LSINF1124 Projet de programmation LSINF1124 Projet de programmation Database Programming with Java TM Sébastien Combéfis University of Louvain (UCLouvain) Louvain School of Engineering (EPL) March 1, 2011 Introduction A database is a collection

More information

Generating XML from Relational Tables using ORACLE. by Selim Mimaroglu Supervisor: Betty O NeilO

Generating XML from Relational Tables using ORACLE. by Selim Mimaroglu Supervisor: Betty O NeilO Generating XML from Relational Tables using ORACLE by Selim Mimaroglu Supervisor: Betty O NeilO 1 INTRODUCTION Database: : A usually large collection of data, organized specially for rapid search and retrieval

More information

Moving from CS 61A Scheme to CS 61B Java

Moving from CS 61A Scheme to CS 61B Java Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you

More information

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014 CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections

More information

Financial Management System

Financial Management System DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING UNIVERSITY OF NEBRASKA LINCOLN Financial Management System CSCE 156 Computer Science II Project Student 002 11/15/2013 Version 3.0 The contents of this document

More information

Abstract. Description

Abstract. Description Project title: Bloodhound: Dynamic client-side autocompletion features for the Apache Bloodhound ticket system Name: Sifa Sensay Student e-mail: sifasensay@gmail.com Student Major: Software Engineering

More information

Why NoSQL? Your database options in the new non- relational world. 2015 IBM Cloudant 1

Why NoSQL? Your database options in the new non- relational world. 2015 IBM Cloudant 1 Why NoSQL? Your database options in the new non- relational world 2015 IBM Cloudant 1 Table of Contents New types of apps are generating new types of data... 3 A brief history on NoSQL... 3 NoSQL s roots

More information

Database Migration from MySQL to RDM Server

Database Migration from MySQL to RDM Server MIGRATION GUIDE Database Migration from MySQL to RDM Server A Birdstep Technology, Inc. Raima Embedded Database Division Migration Guide Published: May, 2009 Author: Daigoro F. Toyama Senior Software Engineer

More information

Discovering SQL. Wiley Publishing, Inc. A HANDS-ON GUIDE FOR BEGINNERS. Alex Kriegel WILEY

Discovering SQL. Wiley Publishing, Inc. A HANDS-ON GUIDE FOR BEGINNERS. Alex Kriegel WILEY Discovering SQL A HANDS-ON GUIDE FOR BEGINNERS Alex Kriegel WILEY Wiley Publishing, Inc. INTRODUCTION xxv CHAPTER 1: DROWNING IN DATA, DYING OF THIRST FOR KNOWLEDGE 1 Data Deluge and Informational Overload

More information

Short notes on webpage programming languages

Short notes on webpage programming languages Short notes on webpage programming languages What is HTML? HTML is a language for describing web pages. HTML stands for Hyper Text Markup Language HTML is a markup language A markup language is a set of

More information

Applets, RMI, JDBC Exam Review

Applets, RMI, JDBC Exam Review Applets, RMI, JDBC Exam Review Sara Sprenkle Announcements Quiz today Project 2 due tomorrow Exam on Thursday Web programming CPM and servlets vs JSPs Sara Sprenkle - CISC370 2 1 Division of Labor Java

More information

Advanced PostgreSQL SQL Injection and Filter Bypass Techniques

Advanced PostgreSQL SQL Injection and Filter Bypass Techniques Advanced PostgreSQL SQL Injection and Filter Bypass Techniques INFIGO-TD TD-200 2009-04 2009-06 06-17 Leon Juranić leon.juranic@infigo.hr INFIGO IS. All rights reserved. This document contains information

More information

Java EE Web Development Course Program

Java EE Web Development Course Program Java EE Web Development Course Program Part I Introduction to Programming 1. Introduction to programming. Compilers, interpreters, virtual machines. Primitive types, variables, basic operators, expressions,

More information

Application Development

Application Development Microsoft SQL Azure: Enterprise Application Development Build enterprise-ready applications and projects with SQL Azure Jayaram Krishnaswamy PUBLISHING BIRMINGHAM - MUMBAI Preface 1 Chapter 1: Cloud Computing

More information

INFORMATION BROCHURE Certificate Course in Web Design Using PHP/MySQL

INFORMATION BROCHURE Certificate Course in Web Design Using PHP/MySQL INFORMATION BROCHURE OF Certificate Course in Web Design Using PHP/MySQL National Institute of Electronics & Information Technology (An Autonomous Scientific Society of Department of Information Technology,

More information

Application note: SQL@CHIP Connecting the IPC@CHIP to a Database

Application note: SQL@CHIP Connecting the IPC@CHIP to a Database Application note: SQL@CHIP Connecting the IPC@CHIP to a Database 1. Introduction This application note describes how to connect an IPC@CHIP to a database and exchange data between those. As there are no

More information

Database Query 1: SQL Basics

Database Query 1: SQL Basics Database Query 1: SQL Basics CIS 3730 Designing and Managing Data J.G. Zheng Fall 2010 1 Overview Using Structured Query Language (SQL) to get the data you want from relational databases Learning basic

More information

Specialized Programme on Web Application Development using Open Source Tools

Specialized Programme on Web Application Development using Open Source Tools Specialized Programme on Web Application Development using Open Source Tools A. NAME OF INSTITUTE Centre For Development of Advanced Computing B. NAME/TITLE OF THE COURSE C. COURSE DATES WITH DURATION

More information

Japan Communication India Skill Development Center

Japan Communication India Skill Development Center Japan Communication India Skill Development Center Java Application System Developer Course Detail Track 2b Java Application Software Developer: Phase1 SQL Overview 70 Introduction Database, DB Server

More information

CTutor. Tiago Aguiar tiago.afonso.aguiar@ist.utl.pt. Instituto Superior Técnico, Lisboa, Portugal November 2014

CTutor. Tiago Aguiar tiago.afonso.aguiar@ist.utl.pt. Instituto Superior Técnico, Lisboa, Portugal November 2014 CTutor Tiago Aguiar tiago.afonso.aguiar@ist.utl.pt Instituto Superior Técnico, Lisboa, Portugal November 2014 Abstract CTutor is a program visualization tool for the programming language, C. As the name

More information

TECH TUTORIAL: EMBEDDING ANALYTICS INTO A DATABASE USING SOURCEPRO AND JMSL

TECH TUTORIAL: EMBEDDING ANALYTICS INTO A DATABASE USING SOURCEPRO AND JMSL TECH TUTORIAL: EMBEDDING ANALYTICS INTO A DATABASE USING SOURCEPRO AND JMSL This white paper describes how to implement embedded analytics within a database using SourcePro and the JMSL Numerical Library,

More information

Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)

Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6) Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking

More information

02 B The Java Virtual Machine

02 B The Java Virtual Machine 02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual

More information

Toad for Data Analysts, Tips n Tricks

Toad for Data Analysts, Tips n Tricks Toad for Data Analysts, Tips n Tricks or Things Everyone Should Know about TDA Just what is Toad for Data Analysts? Toad is a brand at Quest. We have several tools that have been built explicitly for developers

More information

SQL and Java. Database Systems Lecture 19 Natasha Alechina

SQL and Java. Database Systems Lecture 19 Natasha Alechina Database Systems Lecture 19 Natasha Alechina In this Lecture SQL in Java SQL from within other Languages SQL, Java, and JDBC For More Information Sun Java tutorial: http://java.sun.com/docs/books/tutorial/jdbc

More information

Programming Against Hybrid Databases with Java Handling SQL and NoSQL. Brian Hughes IBM

Programming Against Hybrid Databases with Java Handling SQL and NoSQL. Brian Hughes IBM Programming Against Hybrid Databases with Java Handling SQL and NoSQL Brian Hughes IBM 1 Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services

More information

Black Hat Briefings USA 2004 Cameron Hotchkies cameron@0x90.org

Black Hat Briefings USA 2004 Cameron Hotchkies cameron@0x90.org Blind SQL Injection Automation Techniques Black Hat Briefings USA 2004 Cameron Hotchkies cameron@0x90.org What is SQL Injection? Client supplied data passed to an application without appropriate data validation

More information

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner 1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi

More information

Specialized Programme on Web Application Development using Open Source Tools

Specialized Programme on Web Application Development using Open Source Tools Specialized Programme on Web Application Development using Open Source Tools Objective: At the end of the course, Students will be able to: Understand various open source tools(programming tools and databases)

More information

edoc Document Generation Suite

edoc Document Generation Suite e Doc Suite is a set of Microsoft Office add-ins for Word, Excel & PowerPoint that lets you use your data in MS Office with ease. Creating simple flat tables from data sources is possible in MS Office,

More information

Web Development using PHP (WD_PHP) Duration 1.5 months

Web Development using PHP (WD_PHP) Duration 1.5 months Duration 1.5 months Our program is a practical knowledge oriented program aimed at learning the techniques of web development using PHP, HTML, CSS & JavaScript. It has some unique features which are as

More information

Services. Relational. Databases & JDBC. Today. Relational. Databases SQL JDBC. Next Time. Services. Relational. Databases & JDBC. Today.

Services. Relational. Databases & JDBC. Today. Relational. Databases SQL JDBC. Next Time. Services. Relational. Databases & JDBC. Today. & & 1 & 2 Lecture #7 2008 3 Terminology Structure & & Database server software referred to as Database Management Systems (DBMS) Database schemas describe database structure Data ordered in tables, rows

More information

Object Relational Database Mapping. Alex Boughton Spring 2011

Object Relational Database Mapping. Alex Boughton Spring 2011 + Object Relational Database Mapping Alex Boughton Spring 2011 + Presentation Overview Overview of database management systems What is ORDM Comparison of ORDM with other DBMSs Motivation for ORDM Quick

More information

Japan Communication India Skill Development Center

Japan Communication India Skill Development Center Japan Communication India Skill Development Center Java Application System Developer Course Detail Track 2a Java Application Software Developer: Phase1 SQL Overview 70 Introduction Database, DB Server

More information

How To Let A Lecturer Know If Someone Is At A Lecture Or If They Are At A Guesthouse

How To Let A Lecturer Know If Someone Is At A Lecture Or If They Are At A Guesthouse Saya WebServer Mini-project report Introduction: The Saya WebServer mini-project is a multipurpose one. One use of it is when a lecturer (of the cs faculty) is at the reception desk and interested in knowing

More information

HTML5. Turn this page to see Quick Guide of CTTC

HTML5. Turn this page to see Quick Guide of CTTC Programming SharePoint 2013 Development Courses ASP.NET SQL TECHNOLGY TRAINING GUIDE Visual Studio PHP Programming Android App Programming HTML5 Jquery Your Training Partner in Cutting Edge Technologies

More information

Application Development for Mobile and Ubiquitous Computing

Application Development for Mobile and Ubiquitous Computing Department of Computer Science Institute for System Architecture, Chair for Computer Network Application Development for Mobile and Ubiquitous Computing igrocshop Seminar Task - Second Presentation Group

More information

Linas Virbalas Continuent, Inc.

Linas Virbalas Continuent, Inc. Linas Virbalas Continuent, Inc. Heterogeneous Replication Replication between different types of DBMS / Introductions / What is Tungsten (the whole stack)? / A Word About MySQL Replication / Tungsten Replicator:

More information

Semantic Stored Procedures Programming Environment and performance analysis

Semantic Stored Procedures Programming Environment and performance analysis Semantic Stored Procedures Programming Environment and performance analysis Marjan Efremov 1, Vladimir Zdraveski 2, Petar Ristoski 2, Dimitar Trajanov 2 1 Open Mind Solutions Skopje, bul. Kliment Ohridski

More information