Chapter 2. Installation
Index:
HXTT DBF packages include a Type 4 JDBC driver. Type 4 indicates that the driver is written in Pure Java, and communicates in the database system's own network protocol. Because of this, the driver is platform independent; once compiled, the driver can be used on any system. HXTT DBF can run on any platforms with Java VM, which includes Microsoft Windows, Novell Netware, OS2, UNIX, and LINUX. HXTT DBF supports Personal Java, JDK1.0.X, JDK1.1.X, JDK1.2.X, JDK1.3.X, JDK1.4.X and JDK1.5.X. HXTT DBF includes a database engine which can support multi-user access. It supports { UNION | INTERSECT | EXCEPT | MINUS } [ ALL ] query , INNER JOIN, FULL JOIN, LEFT JOIN, RIGHT JOIN, NATURAL JOIN, CROSS JOIN, and subquery which includes single-row subquery, multirow subquery, multiple-column subquery, inline views, and correlated subquery.
When java loads any class, it searches a list known as the classpath. This is a list of directories where classes are placed, or a list of jar files (archives containing classes and other resources) or both. HXTT DBF driver is a Type 4 driver. You can do this in many different methods, but the most command are:
You can know detailed information about "Setting the Classpath" from your JDK Tools and Utilities. Let's use JDBC3.0 package as a simple sample. To put DBF_JDBC30.jar into your class path, you should use "export CLASSPATH=/usr/share/lib/DBF_JDBC30.jar:$CLASSPATH" on Solaris and Linux, and "SET CLASSPATH=\javalib\DBF_JDBC30.jar;%classpath%" on Windows.
Any source that uses JDBC needs to import the java.sql package by using "
import java.sql.*;".
HXTT DBF driver' name is com.hxtt.sql.dbf.DBFDriver, and you can uses it without
involving hard coding the driver into your code. You do this by setting the
jdbc.drivers system property. For example, for command line apps you can use:
java -Djdbc.drivers=com.hxtt.sql.dbf.DBFDriver yourApp
Then, the JVM upon startup will load the drivers automatically. Some applications
(JBoss, Tomcat etc) support a .properties file which they use to save putting
this on the command line.
The second method is the most common and involves you loading the driver yourself.
It's simple:
Class.forName("com.hxtt.sql.dbf.DBFDriver");
From then on you can get connections from DriverManager.
Note: If Class.forName() throws ClassNotFoundException, you should check your classpath.
After the driver has been registered with the DriverManager, you can obtain a Connection instance that is connected to a particular database by calling DriverManager.getConnection(). With JDBC, a database is represented by a URL (Uniform Resource Locator).
Embedded: jdbc:DBF:[//]/[DatabasePath][?prop1=value1[&prop2=value2]] (You can omit that "//" characters sometimes) For example: "jdbc:DBF:/." "jdbc:DBF:/c:/data" for Windows driver "jdbc:DBF:///c:/data" for Windows driver "jdbc:DBF:////usr/data" for unix or linux "jdbc:DBF://///192.168.10.2/sharedir" for UNC path "jdbc:DBF:/./data" Remote Access: jdbc:DBF://host:port/[DatabasePath] For example: "jdbc:DBF://domain.com:3099/c:/data" if one DBFServer is run on the 3099 port of domain.com
To connect, you need to get a Connection instance from JDBC. To do this, you use the DriverManager.getConnection() method:
Connection con = DriverManager.getConnection(url, properties);
There are a few different signatures for the getConnection() method. You should see the API documentation that comes with your JDK for more specific information on how to use them. You can specify additional properties to the JDBC driver by placing them in a java.util.Properties instance and passing that instance to the DriverManager when you connect.
Property Name
|
Definition
|
Default Value
|
host | The remote host on which one DBFServer is running | null |
port | The port on which one DBFServer is listening | null |
serverType | The type of DBFServer on the remote host | null |
user | The user to connect as | null |
password | The password to use when connecting | null |
charSet | To specify a Character Encoding Scheme other than the client default. You can find a Supported Encodings list of file:///c|/jdk1.2/docs/guide/internat/encoding.doc.html. Cp895(Czech MS - DOS 895), Cp620(Polish MS - DOS 620) and Mazovia are extra supported although JVM doesn't support those. | null |
lockType | To specify a compatible lock for other applications. You can use DBASE, DBASE4BDE, DBASEIII, DBASEIV, CLIPPER, CLIPPER5.3, SoftC, FOXBASE, FOXPRO, FOXPRO4BDE, and VFP. | null |
lockTimeout | To specify DBF driver's timeout in milliseconds to wait until other processes or Xbase applications released record lock or table lock. 0 means a default value, and <0 means no wait. | 1000 |
cryptType | To specify a crypt type for Table Encryption and Column Level Encryption. All new created table in this connection will become crypted table. You can use DES, TRIDES, and BLOWFISH now. | null |
cryptKey | To specify a crypt key. Without encrypt key, CREATE TABLE won't create crypted table. | null |
storeCryptKey | Indicates whether crypt key is stored in crypted table. If stored, crypted table can be opened automatically in any connection without predefined crypt properites. If not stored, cryptd table can only be opened with correct key, and none include us can help you in cracking your data without the correct key. | false |
tmpdir | Indicates whether set a temp directory, Default: the value of JVM's "java.io.tmpdir" property. If that value is incorrect, uing the directory of JDBC url. | null |
delayedClose | Indicates the delayed seconds for close transaction. That option is used to avoid frequent close/open table operations for following sqls. Automatic temporary index is disabled when delayedClose<8s. You can use 0~120 seconds. Default: 2. | null |
maxCacheSize | Indicates the max memory utilization for per table on automatic temporary index or matched result cache. You can use 16~16384 kilo bytes. Default: 4096. | null |
DeletesAreVisible | Indicates whether DBF's resultSet includes deleted records. | false |
DefaultExtension | Indicates whether DBF driver uses another default extension to replace '.DBF'. | DBF |
DefaultCDXExtension | Indicates whether DBF driver uses another default CDX extension to replace '.CDX'. | CDX |
DefaultMDXExtension | Indicates whether DBF driver uses another default MDX extension to replace '.MDX'. | MDX |
DefaultNTXExtension | Indicates whether DBF driver uses another default NTX extension to replace '.NTX'. | NTX |
DefaultNDXExtension | Indicates whether DBF driver uses another default NDX extension to replace '.NDX'. | NDX |
DefaultIDXExtension | Indicates whether DBF driver uses another default IDX extension to replace '.IDX'. | IDX |
OtherExtensions | Indicates whether DBF driver supports other extensions except for '.DBF'. | false |
Version Number | Xbase Version Number. You can use null, "30"(Visual FoxPro 3.0~9.0), "02"(FoxBase, dBASE II), "03"(dBASE III), "83", "04"(dBASE IV), "05"(dBASE V), "F5"(FoxPro),"8B", "8E", "7B", or "DB2K"(dbase 2000). | 30 |
BLOCKSIZE | Xbase's BLOCKSIZE. You can use 1~255 | 64 |
MissingMemoFile | Indicates the action when memo file is missing. You can use "throw" (throw an SQLException), "ignore" (continue to load table when memo file is missing. All memo columns will return null value.), and "repair" (clear all old memo value, and rebuild a new memo file). | throw |
loadIndices | Indicates whether load automatically and update index files. | true |
Default Index Suffix | Indicates the default suffix for the index file. You can use null, "IDX","CDX","NDX","MDX", and "NTX" now. | null |
COMPACTEDINDEX | Indicates whether the default index file is compacted or not. | false |
When your code then tries to open a Connection, and you get a No driver available SQLException being thrown, this is probably caused by the driver not being in the class path, or the JDBC url not being correct.
To close the database connection, simply call the close() method to the Connection:
con.close();