Book 3. Database Connectivity. U:\Book\Book_03.doc Database Connectivity



Similar documents
Fasthosts ASP scripting examples Page 1 of 17

Crystal Reports. Overview. Contents. Connecting the Report Designer Component to a Data Source

Chapter 4 Accessing Data

Siemens Applied Automation Page 1 11/26/03 9:57 PM. Maxum ODBC 3.11

Setting Up ALERE with Client/Server Data

Accessing Database Information Using Visual Basic:

Create an Access Database from within Visual Basic 6.

DataDirect XQuery Technical Overview

Visual Basic Database Programming

ODBC Client Driver Help Kepware, Inc.

High-Performance Oracle: Proven Methods for Achieving Optimum Performance and Availability

Creating a universe on Hive with Hortonworks HDP 2.0

Troubleshooting guide for errors in Active Server Pages and Microsoft Data Access Components

Title. Syntax. stata.com. odbc Load, write, or view data from ODBC sources. List ODBC sources to which Stata can connect odbc list

ODBC Overview and Information

CHAPTER 23: USING ODBC

National Fire Incident Reporting System (NFIRS 5.0) Configuration Tool User's Guide

Integrating Web & DBMS

for Networks Installation Guide for the application on the server July 2014 (GUIDE 2) Lucid Rapid Version 6.05-N and later

Using Crystal Reports with VFP

Getting Started with STATISTICA Enterprise Programming

How to Configure Informix Connect and ODBC

HELP DESK MANUAL INSTALLATION GUIDE

SAP Business Objects XIR3.0/3.1, BI 4.0 & 4.1 Course Content

Connecting to an Excel Workbook with ADO

Migrating helpdesk to a new server

ReportBy Notification Examples

for Networks Installation Guide for the application on the server August 2014 (GUIDE 2) Lucid Exact Version 1.7-N and later

BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER

ASP.NET Programming with C# and SQL Server

Use the ADO Control in your Visual Basic 6 projects

for Networks Installation Guide for the application on a server September 2015 (GUIDE 2) Memory Booster version 1.3-N and later

Using IRDB in a Dot Net Project

Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix ABSTRACT INTRODUCTION Data Access

Contents. Perl scripting examples Page 1 of 10

ODBC Reference Guide

Pastel Evolution BIC. Getting Started Guide

VBScript Database Tutorial Part 1

National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide

Professional Services. Plant Applications SDK Guidelines GE FANUC AUTOMATION. Prepared by. Donna Lui Professional Services

How to Use PIPS Access to/from SQL Database Utility Program. By PIPSUS Support Team Dr. Chouikha

Connect to an Oracle Database from Visual Basic 6 (Part 2)

Proficy* HMI/SCADA - ifix U SING SQL

High Performance Websites: ADO versus MSXML

AWS Schema Conversion Tool. User Guide Version 1.0

Specifications of Paradox for Windows

FileMaker 11. ODBC and JDBC Guide

Extending the Data Warehouse: An Introduction to OLE DB

ACDS AIMS Certified Database Specialist Course.

Getting Started Guide

SQL Pass-Through and the ODBC Interface

CHAPTER 1: CLIENT/SERVER INTEGRATED DEVELOPMENT ENVIRONMENT (C/SIDE)

PaperClip Audit System Installation Guide

Database Automation using VBA

Create a New Database in Access 2010

Getting Started Guide SAGE ACCPAC INTELLIGENCE

OpenScape Business V2

Producing Listings and Reports Using SAS and Crystal Reports Krishna (Balakrishna) Dandamudi, PharmaNet - SPS, Kennett Square, PA

Linking Access to SQL Server

What is ODBC? Database Connectivity ODBC, JDBC and SQLJ. ODBC Architecture. More on ODBC. JDBC vs ODBC. What is JDBC?

Data Access Guide. BusinessObjects 11. Windows and UNIX

Jet Data Manager 2012 User Guide

FileMaker 13. ODBC and JDBC Guide

Simba XMLA Provider for Oracle OLAP 2.0. Linux Administration Guide. Simba Technologies Inc. April 23, 2013

Knocker main application User manual

Tips and Tricks SAGE ACCPAC INTELLIGENCE

Sage Intelligence Financial Reporting for Sage ERP X3 Version 6.5 Installation Guide

Connectivity Pack for Microsoft Guide

Oracle Warehouse Builder 10g

How to move a SQL database from one server to another

USQL Multi-Tier Client DSN s on Windows x64 editions

Accessing Your Database with JMP 10 JMP Discovery Conference 2012 Brian Corcoran SAS Institute

Short notes on webpage programming languages

FileMaker 12. ODBC and JDBC Guide

Recording Supervisor Manual Presence Software

2.3 - Installing the moveon management module - SQL version

IBM DB2 XML support. How to Configure the IBM DB2 Support in oxygen

IMS Users Group. The Right Change SQL-Based Middleware. Mike McKee CONNX Solutions.

Two new DB2 Web Query options expand Microsoft integration As printed in the September 2009 edition of the IBM Systems Magazine

MGC WebCommander Web Server Manager

Suite. How to Use GrandMaster Suite. Exporting with ODBC

ProficyTM. HMI/SCADA - ifix U SING SQL

Business Intelligence Getting Started Guide

Abstract. For notes detailing the changes in each release, see the MySQL for Excel Release Notes. For legal information, see the Legal Notices.

SPARX SYSTEMS ENTERPRISE ARCHITECT GOES CLOUD USING MICROSOFT AZURE AND MICROSOFT SQL AZURE VERSION 2.1

BarTender s ActiveX Automation Interface. The World's Leading Software for Label, Barcode, RFID & Card Printing

ORACLE BUSINESS INTELLIGENCE WORKSHOP

SequeLink Server for ODBC Socket

DB Administration COMOS. Platform DB Administration. Trademarks 1. Prerequisites. MS SQL Server 2005/ Oracle. Operating Manual 09/2011

AWS Schema Conversion Tool. User Guide Version 1.0

Migration Manager v6. User Guide. Version

Microsoft Access is an outstanding environment for both database users and professional. Introduction to Microsoft Access and Programming SESSION

WEB DATABASE PUBLISHING

Release Notes For Versant/ODBC On Windows. Release

Acknowledgments. About the Author

aspwebcalendar FREE / Quick Start Guide 1

Guide to Upsizing from Access to SQL Server

UltraQuest Cloud Server. White Paper Version 1.0

Accessing a Microsoft SQL Server Database from SAS on Microsoft Windows

2 SQL in iseries Navigator

Transcription:

1 Book 3 Database Connectivity U:\Book\Book_03.doc Database Connectivity 5 10 15 Database Connectivity...1 1 Database Access With Windows ODBC...2 OLE/DB, ODBC and other Data Source Driver Models...2 Setting up A Sample Database...3 Selecting Data From Database Tables...4 Selecting Data Using DAO...5 ADODB Recordsets...6 VB Example: Display Order Details from the Northwind Database...8 2 Accessing Databases With Java JDBC...9 2.1 JDBC An ODBC For Java...9 3 Accessing Databases With R/3...10 3.1 R/3 And Open SQL...10 Fehler! Es wurden keine Einträge für das Inhaltsverzeichnis gefunden. 1

2 Fehler! Formatvorlage nicht definiert./database Connectivity 1 Database Access With Windows ODBC Most web projects are database projects. Although we want to make use of R/3 as the main intelligent database server, we will need to store data additionally or alternatively in databases on the web server. The chapter deals with different database access methods, mainly through ODBC, JDBC and SQL. These techniques had been introduced to allow a common access gateway to database independent of the programming language and the database engine. 20 35 40 50 55 1.1 OLE/DB, ODBC and other Data Source Driver Models Accessing a database with its native driver may give you additional programming capabilities while losing some compatibility. Many data sources do not even support ODBC. The Open Database Connectivity ODBC has been the long-standing Windows standard solution for connecting your applications to arbitrary databases. The principle is to use virtually the same interface structure, no matter what physical kind of database is connected. However, it is certainly not the only one. Connecting to your 25 database with ODBC avoids the need for detailed knowledge of individual database languages for programmed access 30 OLE/DB is Microsoft s latest proposal for database connectivity DAO Database Access Object uses the Access native JET engine Use IBM Database V or SQL server for large volume database 45 SAP R/3 is connected via DCOM object methods or simulated RFC calls Figure 1: ODBC is a universal database access interface. Its purpose is to allow a unified access method to connect to different databases. ODBC allows one single place in the system or program where you specify the type of database or driver to use. Every access to ODBC will then be translated by the ODBC driver to the individual database language, be it SQL, Access (JET), dbase, Excel or flat text files. Since Microsoft pushes the use of their MS SQL Server, they discourage the further use of ODBC. As a replacement they suggest using the OLE/DB driver model. OLE/DB features the same capabilities as ODBC plus the support of SQL. However, the driver model is totally different from ODBC, so using OLE/DB in place of ODBC would mean some rewriting of your applications. There is another commonly used access method mainly for MS Access databases, the Database Access Object Control. This is an Active/X (OCX) library which implements access methods for Microsoft s JET database engine, which is mainly used by Microsoft Access, but is also able to read and write dbase and FoxPro files. If you implement a purely Access based application, you may like it because of the wealth of features of the DAO, especially the possibility to fully access the data dictionary of an Access database. However, if you expect large data volumes for your local web server database then you should consider MS SQL Server or IBM Universal Database and then DAO is out of the reckoning. There is neither a commonly used ODBC nor OLE/DB driver for SAP R/3 available to date, although you could easily implement such an ODBC or OLE/DB driver for R/3 by mapping RFC calls to SQL stored procedure calls and SQL statements to dynamic SQL statements. Therefore we will access R/3 data sources with a native DCOM connection by either executing a BAPI object method or by calling a function module via RFC. It might be interesting to know, for the techies only, that RFCs are usually called via DCOM by calling a DCOM Proxy method which tells R/3 to call the right function. Connection schemes for different access methods Scheme here (from msdn???? Or Addison Wesley VB for DB programmierung???) Kommentar: Is this repetition with 2 lines above..? 2 of 10 Axel Angeli 12 March 2001

Database Access With Windows ODBC/Fehler! Formatvorlage nicht definiert. 3 60 70 75 80 90 1.2 Setting up A Sample Database In this chapter we will show how to work on one of the sample databases found in Microsoft Access. The database used is created from the Order Entry.mdz of MS Access 97. Microsoft Access comes with a number of template databases which have the extension.mdz 65 In Access 2000 there is the sample database northwind.mdb We created a new database weborders.mdb from the template Order Entry.mdz In the next step we will 85 register the database as an ODBC source Microsoft Access comes with a couple of sample databases. Of course you may define your own databases with the Access designer, but making use of the sample databases is a good starting point, especially because the databases are already filled with sample data. This is great because there is nothing more annoying for a developer of a database application than an empty or nearly empty database. The templates which you can use to generate the sample databases are stored in the Microsoft Access template folder which is automatically installed with Access. The templates have the ending.mdz so it is easy to find them. In our installation we found them in the standard folder C:\Program Files\Microsoft Office\Templates\Databases. We decided to use a template from MS Access 97 as we learned from experience that there is still a lot of companies out there that migrated to Microsoft Office 2000 but not to Access 2000. There is a good reason for it. While Word 2000 and Excel 2000 are compatible with their predecessors, e.g. you can save in Word 97 format with Word 2000, this is not true for MS Access 2000. MS Access 2000 can open MS Access 97 databases, but you cannot modify data dictionary objects like adding or modifying tables or queries and save them directly in MS 97 format (however, it is possible to convert MS 2000 databases into MS 97 format). For Microsoft Access 2000 users there is the standard example database Northwind, which you can also download from http://msdn.microsoft.com. For our first trials we create a new database with the name weborders from the template Order Entry.mdz. This is a sample application for sales order entry in Microsoft Access. Initially we are only interested in the Order Details database table. In the following chapters we will refer to the database as an ODBC data source with the name ShoppingBasketDemo. This name must be registered and assigned to the database in the windows control panel. To register do: Go to the Control Panel and choose ODBC Sources Choose the System DSN tab strip Enter the path name to your database weborders.mdb and specify the name ShoppingBasketDemo Figure 2: This will make your database known to all ODBC compliant objects. Datasource (ODBC) screen in the Windows Control Panel 3

4 Fehler! Formatvorlage nicht definiert./database Connectivity 100 If you want to access 95 the data from the newly copied or created database you can connect via ODBC Figure 3: Figure 4: The actual driver to be used by ODBC is either specified during connection to the database in the connection string or in the central configuration folder of the ODBC configuration as a so called DSN file. The DSN holds a short name for the complete connection and driver information that may be required by the accessed database. Connect to a database by specifying the driver directly conn.open _ "Driver={Microsoft Access Driver (*.mdb)};dbq=" _ & Server.MapPath("../../dbs/orders.mdb") conn.close Connect to a database by using a DSN name previously defined in the ODBC configuration conn.open "DSN=weborders" conn.close 1.3 Selecting Data From Database Tables The Microsoft VB ADO object makes it very simple to read, insert, update and delete data from a database table. Microsoft ADODB and RECORDSET are powerful tools when working with databases 105 We create a new database weborders.mdb from the template Order Entry.mdz Connecting to your 110 database with ODBC avoids the need for detailed knowledge of individual database languages for access through a program 115 If you want to access the data from the newly copied or created database you can connect via ODBC 120 The next example makes use of the ADODB and RECORDSET objects. The ADODB object exposes the basic methods to access a database table. A recordset is an enhanced version of an array. While you can access arrays only via indices, a recordset comes with database-like access methods. For our first trials we create a new database with the name weborders from the template Order Entry.mdz. This is a sample application for sales order entry in Microsoft Access. Initially we are only interested in the Order Details database table. ODBC - Open Database Connectivity - is a universal database access interface. Its purpose is to provide a unified access method for connecting to different databases. ODBC allows one single place in the system or program where you specify the type of database or driver to use. Every access to ODBC will then be translated by the ODBC driver to the individual database language, be it SQL, Access, dbase, Excel or flat text files. The actual driver to be used by ODBC is either specified during connection to the database in the connection string or in the central configuration folder of the ODBC configuration as a so-called DSN file. The DSN holds a short name for the complete connection and driver information that may be required by the accessed database. 4 of 10 Axel Angeli 12 March 2001

Database Access With Windows ODBC/Fehler! Formatvorlage nicht definiert. 5 Figure 5: Reading records from a database table and output them as an HTML response <TABLE BORDER="1" WIDTH="100%"> <TR><TD> <% set conn = Server.CreateObject("ADODB.Connection") set recs = Server.CreateObject("ADODB.Recordset") conn.connectionstring = _ "Driver={Microsoft Access Driver (*.mdb)};dbq=" _ & Server.MapPath("../../dbs/orders.mdb") conn.open 'Orders is the name of a table of the open database recs.open "Select * from Orders", conn number_of_recs_to_display = 8 line_separator = "</TD><TD>" field_separator = "</TR><TR><TD>" response.write recs.getstring(, _ number_of_recs_to_display, _ line_separator, _ field_separator, "") conn.close %> </TD></TR></TABLE> 130 recordset.getstring returns all field values of a number of rows as a single string separated 125 by specified separator strings Examples The example makes use of the very powerful GETSTRING method. It relieves the programmer of a lot of work. It loops over the recordset and concatenates all the field contents. Fields are separated by the field separator and lines are separated by the specified line separator. We chose separators which build an HTML table. openodbc_dsn.asp Open ODBC source via a DSN previously registered in the control panel openodbc_dbq.asp Open an ODBC source directly by specifying a full connection string 1.4 Selecting Data Using DAO The Microsoft VB DAO Data Access Object is another way to access Microsoft databases, mainly those driven by the Microsoft JET engine like Microsoft Access. DAO is less efficient than ADO but gives you access to some features of ACCESS database not accessible via SQL. Microsoft DAO and RECORDSET are powerful elements to work with databases The next example makes use of the Microsoft DAO to access the data dictionary to determine the names of all tables in the database and to explore its content. For that purpose it does: 135 Open a database as an Microsoft DAO Read the names of all tables in the data dictionary Display some records of every table found 5

6 Fehler! Formatvorlage nicht definiert./database Connectivity Figure 6: Loop over all tables in a JET database and list their contents completely <% Sub ShowRecs(pName) if left(pname,4) = "MSys" then exit sub Set recs = dbs.openrecordset(pname) response.write "<HR></HR>" response.write "<H3>Contents of table: <em>" _ & TableDef.Name & "</em></h3>" response.write "<TABLE BORDER='1' WIDTH='100%'> <TR>" for each xfield in recs.fields response.write "<TH>" & xfield.name & "</TH>" next response.write "</TR>" ' *** Loop over all records in the set until EOF while not recs.eof response.write "<TR>" ' *** Loop over the FIELDS collection for each xfield in recs.fields response.write "<TD>" & xfield & "</TD>" next Response.Write "</TR>" recs.movenext wend response.write "</TABLE>" End Sub ============================================== Set dbengine = CreateObject("DAO.DBEngine.36") Set dbs = dbengine.opendatabase(server.mappath("..\..\dbs\orders.mdb")) ============================================== for each TableDef in dbs.tabledefs ShowRecs(TableDef.Name) next ============================================== dbs.close %> 140 Examples openodbc_dsn.asp access a Microsoft Access database with a DSN string openodbc_dbq.asp standalone access to a Microsoft Access database 145 1.5 ADODB Recordsets Recordsets are the Visual Basic version of ABAP internal tables. They are structured arrays of dynamic size. ADODB are usually automatically typed when a database connection is opened ADODB.Recordset in Microsoft Active/X Data Objects Library (msado15.dll) Originally the ADODB recordsets were designed as dynamic buffers for database retrievals. Every time a database connection is opened, the recordset is restructured to reflect the structure of the retrieved database table. Dim myrecs As ADODB.Recordset Sub aconnectedrecordset() Set myconn = CreateObject("ADODB.Connection") myconn.open "Driver={Microsoft Access Driver (*.mdb)};dbq=" _ & "U:\dbs\weborders2000.mdb" myrecs.open "Select * from Orders", myconn myrecs.close End Sub The ADODB library provides the recordset class along with all the other data access objects for OLE/DB. Dim myrecs As ADOR.Recordset Set myrecs = CreateObject("ADODB.Recordset") 6 of 10 Axel Angeli 12 March 2001

Database Access With Windows ODBC/Fehler! Formatvorlage nicht definiert. 7 155 ADOR.Recordset in Microsoft Active/X Data 150 Object Recordset Library (msador15.dll) Disconnected recordsets can be used without a database connection There is a light version of the ADODB recordset library in the msador15.dll library and referenced as ADOR. It uses less memory and creation overhead and is especially useful if you use disconnected recordsets only. Dim myrecs As ADOR.Recordset Set myrecs = CreateObject() Recordsets can also be created programmatically by specifying the fields and field structure information. After this has been done the recordset must be opened with an empty connection string in order to instantiate the recordset. Dim myrecs As ADOR.Recordset Sub adisconnectedrecordset() Set myrecs = CreateObject("ADOR.Recordset") myrecs.cursorlocation = aduseclient myrecs.fields.append "Name", advarchar, 30, adfldisnullable myrecs.fields.append "City", advarchar, 30, adfldisnullable myrecs.fields.append "CreditLimit", adnumeric, 10, adfldlong myrecs.open myrecs.addnew myrecs.fields("name") = "Micky" myrecs.fields("city") = "Ducktown" End Sub In ABAP this can be achieved by defining an internal table: DATA: BEGIN OF myitab OCCURS 0, Name(30), City(30), CreditLimit TYPE P, END OF myitab. Pseudo-disconnected recordsets can be 160 created by defining the structure as a database table and leaving the table empty For a bigger database project it is convenient to create the recordset with a reference to a data dictionary structure. I recommend that you define a table in a local database and leave this table without data. Then you can open the table and have the recordset typed to the structure. In ABAP you would define a structure or table with SE11 and use that as a reference like this: 165 170 Looping over record set entries DATA: myitab LIKE sflight OCCURS 0 WITH HEADER LINE. This takes table SFLIGHT as template for the fields of the internal table. The OCCURS parameter is mandatory and gives an estimate, how many records can be expected, a zero leaves the estimation to the ABAP engine. The addition WITH HEADER LINE automatically defines a buffer line to hold the data of a single record. The individual records of a recordset can be accessed by moving the access pointer forward and backward using the MoveFirst, MoveNext, MovePrevious or MoveLast methods. Dim myrecs As ADODB.Recordset 7

8 Fehler! Formatvorlage nicht definiert./database Connectivity 175 Sub aconnectedrecordset() Set myconn = CreateObject("ADODB.Connection") myconn.open "Driver={Microsoft Access Driver (*.mdb)};dbq=" _ & "U:\dbs\weborders2000.mdb" myrecs.open "Select * from Orders", myconn myrecs.movefirst While Not myrecs.eof This loops over each field in the recordset For Each xfield In myrecs.fields Debug.Print xfield Next myrecs.movenext Wend myrecs.close End Sub Individual field can be accessed via its name: debug.print myrecs.fielöds( Name ) In ABAP this is achieved with the LOOP AT.. ENDLOOP statement. LOOP AT myitab. Write: / myitab.name, myitab.city, myitab.creditlimit ENDLOOP. Not naming the fields explicitly works in ABAP as well. DATA: <ptr>. LOOP AT myitab. WRITE: /. New line only DO 3 times. ASSIGN FIELD sy-index OF STRUCTURE myitab TO <ptr>. WRITE: <ptr>. ENDDO. ENDLOOP. 1.6 VB Example: Display Order Details from the Northwind Database The Northwind database comes ready and filled with data with the Microsoft Access installation. Provided that you copied the Northwind.mdb database somewhere and registered it as ODBC source with the name Northwind the following example will list all the data of the [Order Details] table of the Northwind database. Global conn As ADODB.Connection Global recs As ADODB.Recordset Sub Main() Set conn = CreateObject("ADODB.Connection") conn.connectionstring = "DSN=Northwind" Set recs = CreateObject("ADODB.Recordset") If conn.state = 0 Then conn.open recs.open "Select * from [Order Details]", conn Call DataDisplay If conn.state = 1 Then conn.close End Sub 180 Sub DataDisplay() Dim xrow Dim xfield For Each xfield In recs.fields Debug.Print xfield.name, 8 of 10 Axel Angeli 12 March 2001

Accessing Databases With Java JDBC/Fehler! Formatvorlage nicht definiert. 9 2 Accessing Databases With Java JDBC What ODBC is for Windows, that is JDBC for Java. JDBC stands for Java Data Base Connectivity and is a neutral gateway interface allowing to use the same syntax for submitting database statements regardless of the underlying physical database implementation. 185 Accessing Databases With Java JDBC What ODBC is for Windows, that is JDBC for Java. JDBC stands for Java Data Base Connectivity and is a neutral gateway interface allowing to use the same syntax for submitting database statements regardless of the underlying physical database implementation. 2.1 JDBC An ODBC For Java 9

10 Fehler! Formatvorlage nicht definiert./database Connectivity 3 Accessing Databases With R/3 R/3 does not natively support any database bridges like ODBC or JDBC. Instead it allows access to the underlying database through EXEC SQL by means of the Open SQL standard. 190 195 3.1 R/3 And Open SQL An R/3 installation is an application package that is installed in top of a database instance. R/3 uses exclusively an Open SQL gateway to communicate with the database. Nearly every important database action, as record creation, modification and deletion can be achieved using regular ABAP IV statements. In order to manipulate repository objects, like creating, modifying or deleting a database table structure, there is a complete set of RFC enabled function modules available in R/3. These function modules start with the prefix RPY. If for some reason the ABAP functionality is not sufficient or unsatisfactory, ABAP permits the execution of pass-through-sql-statements. In that case a valid SQL statement for the underlying database instance must be specified as a string and is executed through an EXEC SQL statement. 10 of 10 Axel Angeli 12 March 2001