File: kunkel.html

package info (click to toggle)
lg-issue33 3-4
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,284 kB
  • ctags: 137
  • sloc: makefile: 36; sh: 4
file content (166 lines) | stat: -rw-r--r-- 7,321 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!--startcut ==========================================================-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<title>Using the Xbase DBMS in a Linux Environment LG #33</title>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
ALINK="#FF0000">
<!--endcut ============================================================-->

<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>

<P> <HR> <P> 
<!--===================================================================-->

<center>
<H1><font color="maroon">Using the Xbase DBMS in a Linux Environment</font></H1>
<H4>By <a href="mailto:gkunkel@startech.keller.tx.us">Gary Kunkel</a></H4>
</center>
<P> <HR> <P>  

<H4>Introduction</H4> 
<P>
The Xbase file structure has been around quite a while and was one of the first
widely available DBMS tools for micro computers.  It has become a de-facto 
industry standard for text based databases and is supported by many vendors to
include the Borland Database Engine, Microsoft's FoxPro, Clipper, Sequitor's 
Codebase and others.  Xbase type datafiles will be with us for a while. 
<P>
The Startech Web Server at http://www.startech.keller.tx.us/xbase/xbase.html
maintains a public domain, open source C++ library for accessing Xbase
type datafiles in a multi-user environment.  The library supports automatic 
record locking, memo fields (both dBase III and IV versions), and .NDX style 
indices.  There is also an API for interfacing the library to an Apache
Web Server and providing database access to web pages. Several example programs
provide a framework for creating, browsing and updating databases.   There
are examples which demonstrate how to use the library with an Apache Web Server
and using the library in conjunction with the wxWindows library.  Some readers
of this article will recognize the wxWindows library as a cross platform 
GUI C++ library.
<P><HR> <P> 
<H4>System Requirements</H4> 
<P>
In order to use the Xbase DBMS library, you'll need to have a C/C++ compiler.  The original
library was built on a Slackware distribution with the GNU public domain compiler, but 
there are examples on the site for using the library on other platforms including
Windows, SUN, and VMS.  
<P><HR> <P> 
<H4>Getting Sources</H4> 
<P>
To downloading the library sources, point your web browser to 
http://www.startech.keller.tx.us/xbase/xbase.html and select the latest 
version, which at the time of this writing is version 1.7.4 dated 6/18/98.  
There are a couple of flavors available, but for the purpose of this article,
download the UNIX tar version. Also, you may want to grab the HTML 
documentation for using the library at the same time. Alternatively, you
can get the software via ftp ftp.startech.keller.tx.us and retrieve the
software from the pub/xbase directory.
<P><HR> <P> 
<H4>Installing Sources</H4> 
<P>
To install the Xbase library under the /usr/local directory, execute the 
following commands:  cd /usr/local and mkdir xbase.  The next step is to
set up access rights to the Xbase directory tree.  Your site may have specific 
protocols on directory access rights which you may need to address at this 
point.  If not, then the commands  "chown YOURUSERID.users xbase", then 
"chmod 775 xbase" will get you going.
<P>
Now create a source directory and copy the source code into it: "cd xbase", 
"mkdir src", "cp /home/of/xbase.tar.gz /usr/local/xbase/src",  "cd 
/usr/local/xbase/src", "gunzip xbase.tar.gz" and lastly "tar -xvf 
xbase.tar".  At this point the Xbase source code should be in the
/usr/local/xbase/src directory and be ready to build the library.
<P><HR> <P> 
<H4>Building the Library</H4> 
<P>
Before building the library,  review the options.h file.  This file contains 
any of the Xbase configuration switches you may want or need to change
depending on what you are trying to do.  To build a DLL library,  type 
"make dll".  To build a static library, type "make all". 
<P>
It should compile cleanly.  Errors at this point can often be traced to 
the .h header files currently in use at your site.  If you run into errors at
this point, notify xbase@startech.keller.tx.us for help building the library.
<P><HR> <P> 
<H4>Building a Sample Program</H4> 
<P>
This sample program demonstrates a simple program which creates a sample 
database and index.
<PRE> 
/*  sample1.cpp  */
#include "xbase.h"
main()
{
  Schema MyRecord[] = 
  {
    { "FIRSTNAME", CHAR_FLD,     15, 0 },
    { "LASTNAME",  CHAR_FLD,     20, 0 },
    { "BIRTHDATE", DATE_FLD,      8,  0 },
    { "AMOUNT",    NUMERIC_FLD,   9,  2 },
    { "SWITCH",    LOGICAL_FLD,   1,  0 },
    { "FLOAT1",    FLOAT_FLD,     9,  2 },
    { 0,0,0,0 }
  };

  /* define the classes */
  XBASE x;			/* initialize xbase  */
  DBF MyFile( &x );		/* class for table   */
  NDX MyIndex( &MyFile );	/* class for index 1 */

  SHORT rc;                     /* return code       */

  if(( rc = MyFile.CreateDatabase( "MYFILE.DBF", MyRecord, OVERLAY )) != NO_ERROR )
     cout << "\nError creating database = " << rc << "\n";
  else
  {
     /* define a simple index */
     if(( rc = MyIndex1.CreateIndex( 
       "MYINDEX.NDX", "LASTNAME", 0, 1 )) != NO_ERROR )
        cout << "\nError creating index 1 = " << rc << "\n";
  }
  MyFile.CloseDatabase();   /* Close database and associated indexes */
  return 0;
}     
</PRE> 
Assuming you keyed the program source into directory /usr/local/xbase/myproj,
type "g++ -c -I/usr/include -I/usr/src/linux/include/asm-i386 -I../src
sample1.cpp" to compile the program and type "g++ -o sample1 sample1.o
../src/xbase.a" to link edit the program. The asm-i386 directory in the
above include line is for Linux running on the Intel
platform.  Other platforsm require the correct include directory.
<P><HR> <P> 
<H4>Conclusion</H4> 
<P>
In conclusion, I'd like to say that although the Xbase library is not a 100% 
complete Xbase solution,  it is a stable and reliable library capable of 
handling various database requirements.   If you are looking for database 
libraries in general, or need access to Xbase files in particular, give Xbase
DBMS a try.  If you are a C programmer and new to C++ object oriented
programming, the Xbase DBMS is easy to learn and will help transition you to 
the world of object oriented programming.  If you have never  programmed
in C or C++ before, this library should provide complete enough examples to
get you started programming in C/C++ with confidence.
<P>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Gary Kunkel <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif" 
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./defurne.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./johnson.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P> 
<!--startcut ==========================================================-->
</BODY>
</HTML>
<!--endcut ============================================================-->