This release provides unlimited access to all the database drivers, including Oracle, Informix, Microsoft SQL Server, Sybase SQL Server, Sybase SQL Anywhere, Microsoft Access, and ODBC database drivers. The release also provides major enhancements to error reporting, performance improvements to blob data, support for Symantec Visual Cafe for Java Database Development Edition (dbDE) 2.1 and later versions, as well as bug fixes. Please refer to the on-line help and the "Symantec Installing and Running dbANYWHERE" book for more information.
1. Improved error reporting and analysis
dbANYWHERE now provides detailed diagnostic information for error conditions, including suggestions whenever possible. You can also customize the error messages to be displayed at server or client. Please see the new Errors Property dialog in the Options Menu.
2. Enhanced blob performance
Large blob datatypes can now use a dedicated memory heap or temporary files for intermediate storage, subject to user configuration. Please see the new Tuning Property dialog in the Options Menu.
3. New Session constructor
If you have been using a previous version of dbANYWHERE API, please note
that the constructor of symantec.itools.db.pro.Session has been changed
to include an additional parameter:
public Session (String serverURL, boolean designtime)
The additional parameter specifies whether the Session object is instantiated at design time or run time, and is required to support the
Symantec Visual Cafe development environment dbDE 2.1. Please take the appropriate actions based on your current development environment:
a. If you are using Visual Cafe dbDE 2.1, please use the Migrate utility to automatically convert your existing project to use the new Session constructor.
b. If you stay with previous versions of Visual Cafe, you do not need to make any changes to the Session constructor, however you will need to switch to a different Java API zip file. Please see Installation Notes.
c. If you are not using Visual Cafe development environment, you will need to manually add an additional parameter when you instantiate the Session object. Please be aware that existing applications or applets without the following change will not execute properly:
new Session(serverURL,java.beans.Beans.isDesignTime())if JDK 1.1
or
new Session(serverURL,false) if JDK 1.0.2
4. Closing of JDBC Objects
It is recommended to close all the JDBC objects in your program when they are no longer in use. They include Connection, Statement, PreparedStatement, CallableStatement, and ResultSet objects. When those objects can no longer be referenced (e.g. out of scope in the program), dbANYWHERE will automatically close them, and all of their descendant objects. For example, when the Connection object is closed, all the associated Statement and ResultSet objects will also be automatically closed. All the associated resources will also be automatically freed.
* * * * *
Installation Notes
dbANYWHERE Server provides several versions of Java APIs, to support
various releases of JDK and Symantec Visual Cafe development
environments. They are located in the Redist directory as zip files:
JDK version Development environment APIs needed by Java client
JDK 1.0.2 Visual Cafe Pro 1.0x dbaw_jdk102_vc10.zip/sql.zip
JDK 1.1 Visual Cafe Pro 1.1 dbaw_jdk11_vc20.zip
JDK 1.1 Visual Cafe for Java dbDE 2.0 dbaw_jdk11_vc20.zip
JDK 1.0.2 Visual Cafe for Java dbDE 2.1 dbaw_jdk102_vc21.zip/sql.zip
JDK 1.1 Visual Cafe for Java dbDE 2.1 dbaw_jdk11_vc21.zip
dbaw.zip is a duplicate copy of dbaw_jdk11_vc21.zip, and is the default used in Visual Cafe for Java dbDE 2.1. If you are using dbANYWHERE with dbDE 2.1 and JDK 1.1, you do not need to make any changes to your installation.
However, if you are using previous versions of Visual Cafe, or JDK, you will need to select the appropriate zip file(s) accordingly, and include it (them) in the class path of your Java client.
For example, if you are using dbANYWHERE with JDK 1.1 and Visual Cafe for Java dbDE 2.0, you should:
1. Copy your dbANYWHERE Server\Redist\dbaw_jdk11_vc20.zip to your VisualCafedbDE\Java\Lib directory.
2. In your VisualCafedbDE\Java\Lib directory, remove the existing dbaw.zip, and rename the newly copied dbaw_jdk11_vc20.zip to dbaw.zip. (Ensure your VisualCafedbDE\Bin\sc.ini includes CLASSPATH=...;%@P%\..\JAVA\LIB\DBAW.ZIP;....).
In JDK 1.0.2, browsers did not provide the necessary java.SQL package
needed for database connectivity. Attempting to provide this package
to the browser was not allowed for security reasons. To avoid this
problem, a new package symjava.sql was provided. This package was contained in the file SQL.ZIP, and it duplicated the necessary java
functionality, but it required that all applets, applications and
components use the symjava.sql package when referring to classes such
as SQLException. With JDK 1.1, this problem has been resolved by
browsers. For this reason, the SQL.ZIP package is no longer necessary.
Previous versions of Visual Cafe Pro and dbANYWHERE provided the files
symantec.zip and dbaw_awt.zip. These files are no longer necessary,
and have been replaced with dbaw_awt.jar. Please make sure your
classpath and sc.ini files properly reflect this change. If you do
not, you may experience "client/server mismatch" errors. In general,
this is all handled by the installation utilities, but is worthy of
note.
* * * * *
NT Service Mode
Note that NT Service mode for dbANYWHERE is available only for Windows
NT 3.51 and 4.0 versions. Make sure the dbANYWHERE Server is not
running and launch the dbANYWHERE Service Manager. Select the Install
As Service menu item from the Options menu. dbANYWHERE Service can now
be invoked by the Start button.
* * * * *
Sample Java Applications
A set of sample Java applications have been included on the
installation CD that demonstrate typical uses of JDBC for accessing
data from databases, as well as cataloging information from databases.
The purpose of each Java code module is stated at the top of the code
in a comments section, along with other information about the code.
NOTE: These samples are not automatically installed. You must copy them
from the CD.
The sample applications are intended to give you a sense of how JDBC is
used to communicate with databases across the Internet/Intranet. Some
of them are designed to work with the Sybase SQL Anywhere sample
database. If you do not have the necessary database tables used by
these applications, feel free to modify the code to use whatever
database tables you have access to.
In order to access the Sybase SQL Anywhere Professional sample database,
you will need to have TCP/IP installed on your machine. The JDBC
samples are coded to connect to the local machine, with the use of the
TCP/IP key word, "localhost". This must be changed within the sample
code, if you wish to test against dbANYWHERE running on a remote
machine. (NOTE: In typical 3-Tier implementation, you would have
dbANYWHERE Server running on a separate machine from your databases and
your client machines. However, you can place any of these three tiers
on the same machine. In our JDBC samples, we have assumed that you will
have all 3 tiers on the same machine.)
Symantec cannot promise that the sample applications provided will run
on your particular system. We have tested them to assure that they
will build correctly and launch in the Symantec Cafe environment. You
will probably need to alter the sample code to use your particular
TCP/IP addresses and database configurations.
The installation CD contains all of the necessary files, along with a
document describing them in detail. You will find the following
jdbcShell, and jdbcViewer. The samples with the "jdbc" name prefix
have been nicely organized in an object oriented fashion, extending
parent classes whenever possible.
* * * * *
dbANYWHERE DataSource Configuration Utility
The DataSource Tool is a Java application which is used to register and
control data sources for access through dbANYWHERE Server.
To start using this program, click on the Configure DataSources icon in
the dbANYWHERE Server program group. The DataSource Tool program will
be launched as a Java application. You will have the option to edit
and delete existing data sources, as well as create new entries. For
your convenience, there is a Test function that performs a quick
connect/disconnect for the data source selected using either the JDBC
API or dbANYWHERE API. This way you can check to see if a current
entry specifies a valid, available database. Likewise, you can also
perform connection tests for current data sources through the DSNTEST
function on the dbANYWHERE Server console. For more information,
please consult the dbANYWHERE on-line help.
Note: The DataSource Tool application is provided as a convenient means
of editing the DBAWDSN.INI file. It is provided as an aid, not as a
product itself. For this reason, the program is distributed as is,
with no implied warranties or support. Symantec may provide later
versions in the future, for download from the Symantec public Web site.
* * * * *
dbANYWHERE Server and Database Engine Issues
1. "Client/server mismatch" errors will be experienced with dbANYWHERE
if you have conflicting versions of the classes on the client and
server. This may only be experienced if an earlier version of the
server was used or you are trying to use Visual Cafe Database
Development Edition with dbANYWHERE Server, without having updated the
classes on the client. Please read the Installation Notes section of
this file for further details.
2. dbANYWHERE Server should reside on the http server from which the
applet is being downloaded from if you wish to run dynamically
downloaded applets. Since dbANYWHERE Server runs only on Windows NT
and Windows '95 platforms, http software for Windows NT or Windows 95
must be installed. Applets can be run via Java's applet viewer, and
applications can run independently of browsers. This is a Java security
restriction, not one imposed by dbANYWHERE Server.
3. Sybase SQL Anywhere
a. Currently, there are datatype problems with the Sybase SQL
Anywhere 5.0 database engine, where precision numerics such as real,
float, and double experience data rounding for insert and update SQL
statements. Thus, DML statements using these values in WHERE
clauses will fail on optimistic concurrency due to mismatches between
values in memory and the database. You can verify this problem using
the ISQL utility and comparing values. Sybase is expected to produce
a fix for this in a later version.
b. For datatype mappings, dbANYWHERE will treat Real as a Float.
Although metadata functions will not return the exact datatype,
there will not be any DML problems as Real is a subset of the Float
datatype.
4. Oracle
The Oracle driver currently does not support PL/SQL procedures which
use numeric datatypes as OUT parameters in callable statements. Also,
the Oracle DATE datatype is mapped to TIMESTAMP. SetDate will not
function, however you can alternatively use the SetTimestamp method.
5. SQL Server / Sybase
a. These engines require the use of two DML statements for inserting
records into tables that include binary, varbinary, long varbinary, and long varchar datatypes. The first statement inserts a record excluding values for these datatypes, then the second statement performs an update to set these values and complete the transaction. These columns must not have NOT NULL constraints, or else the transaction will FAIL. Please note that NOT NULL is the default constraint for columns defined in these database engines.
b. The maximum number of simultaneous open statements (dbprocesses) is
controlled by several factors, including the configuration parameter
MAXDBPROCESSES in dbANYWHERE, your database server license, and the
available virtual memory in your system.
The default MAXDBPROCESSES setting in dbANYWHERE is 3. You can modify the setting by following the steps below:
- Edit the sample file provided with the installer (ddmssql.smp for SQL Server, or ddsybase.smp for Sybase), and modify the setting (e.g. MAXDBPROCESSES=10).
- Save the file as ddmssql.ini or ddsybase.ini.
- Restart dbANYWHERE server for the change to take effect.
Please note that the MAXDBPROCESSES setting should never exceed what
your database server license allows. Otherwise, significant time
delay may be experienced on your first connection to database
through dbANYWHERE, as dbANYWHERE needs to find the actual license
limit.
The number of platform-dependent connections is also limited by the
amount of available memory. MS SQL Server DB-Library will attempt
to allocate all of your available memory. If your swap file is too
large, you may also experience significant time delay on your first
connection to MS SQL Server through dbANYWHERE. If this occurs,
you can consider reducing the size of your swap file.
The drivers for these engines do not observe the MINDBPROCESSES
setting defined in the driver INI files. This means that when a
connection is opened, dbANYWHERE will not force the minimum number of
processes to be opened. No negative impact should be experienced.
c. Using the JDBC statement object and issuing a SQL request which
produces result sets, requires the execution of a statement.Close() or the completion of processing the result sets before reissuing another SQL request using the same statement object. Not doing this may result in an error message due to results pending. This is a limitation enforced by the DbLIB client libraries to process all of the results before issuing another SQL request.
d. Smalldatetime is currently not supported. However, datetime is
fully supported and is a suitable substitute for the smalldatetime
datatype.
e. getBytes() and INOUT parameters are not supported.
6. Informix
a. Informix INTERVAL datatype is mapped to JDBC VARCHAR data type.
b. For Informix FLOAT data type, dbANYWHERE rounds the scale (number of digits to the right of decimal point) to 6 digits.
7. ODBC drivers
Intersolv ODBC drivers have trouble returning values for Time and
Timestamp using OUT and IN OUT parameters. Microsoft ODBC drivers work
for Timestamp but fail for Date and Time. Contact your ODBC Driver
Vendor for assistance and updates.
8. DML (data modification language)
a. If a table does not have a unique or primary key, any DML
statements generated that affect multiple rows will fail. The only
recourse is to ensure that enough columns in the WHERE clause of the
DML statement are included to uniquely identify a record.
b. In some database engines, timestamps are special binary datatypes
that should not be modified or inserted by the user. DML statements
will fail if binary timestamp values are used in the WHERE clause.
9. dbANYWHERE API
a. Executing a stored procedure that returns multiple result sets is
currently not supported.
b. Single RelationView objects defined using SQL statements that
join two or more tables cannot be used for any DML operations. You
should only use one table per RelationView and bind RelationViews
together (this will give you the added power of the dbANYWHERE
API's database transaction logic).
c. Return values for stored procedures/functions are not supported,
when called in a format such as {? = call sp_returnvalue( ? )}.
d. dbANYWHERE API requires the database to support manual transactions (autocommit off). If your database does not support transactions, you can only use dbANYWHERE API through native drivers, not ODBC drivers.
10. CallableStatement and PreparedStatement set and get methods for date, time, and timestamp have a variety of problems, specific to each
database driver. This is mostly due to limitations and/or bugs in the
ODBC driver, client libraries, or vendor DLLs.
* * * * *
JDBC and JDK Specific Issues
Note: The JDBC 1.2 specifications and API references have been provided
on the installation CD. These items are NOT automatically installed,
but have been included for your convenience under the jdbc_121
directory.
1. Loss of Precision with java.lang.Double & java.lang.Float (JDK 1.0.2)
Creating a java.lang.Double object with the Double( String ) constructor
can result in a loss of precision if the double value has more than 5
significant digits to the right of the decimal point (ROD). Likewise,
calling Double.toString() will only return 5 digits ROD.
5. Entering Timestamp values using Visual Cafe Database Development
Edition and dbANYWHERE
java.sql.Timestamp supports a 9 digit format for entering nanoseconds.
dbANYWHERE currently only supports 3 digits for milliseconds. Additional digits entered will be round to the nearest milliseconds. For example, 13:20:34.9989 will be round up to 13:20:34.999.
6. JDBC Escape Clauses
dbANYWHERE supports scalar functions and Stored procedures. It does not currently support the following SQL escape clauses:
a. Time and Date literals
b. LIKE escape characters
c. Outer joins
* * * * *
LongVarChar and LongVarBinary JDBC Datatypes
1. Working with JDBC LongVarChar and LongVarBinary datatypes
JDBC LongVarChar datatype stores variable length character data and the
maximum length it can store is database dependent. JDBC LongVarBinary
is the equivalent of LongVarChar with the only difference being that
it can handle binary data.
dbANYWHERE maps these datatypes in different databases as follows:
// file1.txt contains the text data to be inserted into the column
File f = new File("c:\\dbANYWHERE\\Samples\\WriteLargeData\\file1.txt");
FileInputStream fInput = new FileInputStream(f);
stmt1.setAsciiStream(1, fInput, f.length());
stmt1.executeUpdate();
stmt1.close();
* * * * *
Files Installed
c:\dbANYWHERE Server
| Dsntool.bat
| Readme.wri
|
+---api_ref
| | AZIndex.html
| | common.methods.html
| | custom-bullet.gif
| | DatabaseReference.html
| | db.pro.AutoDetail.html
| | db.pro.ConnectionInfo.html
| | db.pro.DataAccess.html
| | db.pro.ListBinder.html
| | db.pro.ListLink.html
| | db.pro.Logon.html
| | db.pro.MultiView.html
| | db.pro.ProjBinder.html
| | db.pro.Projection.html
| | db.pro.ProjLink.html
| | db.pro.Record.html
| | db.pro.RecordLink.html
| | db.pro.RelationView.html
| | db.pro.RelationViewMData.html
| | db.pro.Request.html
| | db.pro.Session.html
| | db.pro.SessionMetaData.html
| | exceptions.html
| | Hierarchy.html
| | Logo.html
| | Package.html
| |
| +---images
| alpha-ix.gif
| alpha_a.gif
| alpha_b.gif
| alpha_c.gif
| alpha_d.gif
| alpha_e.gif
| alpha_f.gif
| alpha_g.gif
| alpha_h.gif
| alpha_i.gif
| alpha_j.gif
| alpha_k.gif
| alpha_l.gif
| alpha_m.gif
| alpha_n.gif
| alpha_o.gif
| alpha_p.gif
| alpha_q.gif
| alpha_r.gif
| alpha_s.gif
| alpha_t.gif
| alpha_u.gif
| alpha_v.gif
| alpha_w.gif
| alpha_x.gif
| alpha_y.gif
| alpha_z.gif
| blank.gif
| class-ix.gif
| class.gif
| const-ix.gif
| const.gif
| custom-bullet.gif
| err-ix.gif
| err.gif
| excpt-ix.gif
| excpt.gif
| if-ix.gif
| if.gif
| logo.gif
| meth-ix.gif
| meth.gif
| pkg-ix.gif
| pkg.gif
| var-ix.gif
| var.gif
| warn-ix.gif
| warn.gif
|
+---Bin
| dbaw.cnt
| dbaw.hlp
| DBAW.LDF
| DBAWDM.DLL
| DBAWDRVR.INI
| DBAWDSN.SMP
| DBAWKRNL.DLL
| DBAWLIC.TXT
| dbawlicense.dll
| DBAWMGR.EXE
| DBAWNBR.DLL
| DBAWPERF.DLL
| DBAWPERF.PMW
| dbawprops.dll
| DBAWSERV.DLL
| dbawservice.exe
| DBAWSRVR.EXE
| DBAWUTL.DLL
| dbuninst.exe
| DDACCESS.DLL
| DDINFMX.DLL
| DDINFMX.SMP
| DDMSSQL.DLL
| DDMSSQL.SMP
| DDODBC.DLL
| DDORACLE.DLL
| DDSYBANY.DLL
| DDSYBASE.SMP
| DDSYBNT.DLL
| DDSYBWIN.DLL
| DeIsL1.isu
| HELPID.TXT
| ITLU.EXE
| LUCLEAN.EXE
| PERFREG.H
| PERFREG.INI
|
+---dsntool
| ChangeBox$SymAction.class
| ChangeBox$SymWindow.class
| ChangeBox.class
| DeleteBox$SymAction.class
| DeleteBox$SymWindow.class
| DeleteBox.class
| DSNTOOL$SymAction.class
| DSNTOOL$SymItem.class
| DSNTOOL$SymWindow.class
| DSNTOOL.class
| DSN_ENGINE.class
| MsgBox$SymAction.class
| MsgBox$SymWindow.class
| MsgBox.class
| TestBox$SymAction.class
| TestBox$SymWindow.class
| TestBox.class
|
+---java
| +---bin
| | java.exe
| | javai.dll
| | net.dll
| | winawt.dll
| |
| +---lib
| classes.zip
| symbeans.jar
|
+---redist
dbaw.zip
dbaw_jdk102_vc10.zip
dbaw_jdk102_vc21.zip
dbaw_jdk11_vc20.zip
dbaw_jdk11_vc21.zip
sql.zip
* * * * *
Where to Find More Information
o For more information on the Java language and related issues:
http://java.sun.com
o For more information on the Sun JDBC API:
http://splash.javasoft.com/jdbc
o For the latest Symantec dbANYWHERE developments, please visit our
Web site:
http://cafe.symantec.com
* * * * *
Questions, Bug Reports, and Other Feedback
Please refer to the on-line help (Help menu -> Sending Feedback). Details are provided on what information should be provided when reporting a problem.
* * * * *
Thank you for choosing dbANYWHERE Server as your Java data
connectivity solution!
Sincerely,
The Symantec Internet Tools/Database Technologies Team