Watch, Follow, &
Connect with Us
Public Report
Report From: JBuilder/Components/DataExpress for EJB    [ Add a report in this area ]  
Report #:  2506   Status: Reported
DataExpress + InterClient 2.0 = Dialect Problem
Project:  JBuilder Build #:  7.0.154.0
Version:    7.0 Submitted By:   Anthony Martin
Report Type:  Basic functionality failure Date Reported:  9/25/2002 4:24:50 PM
Severity:    Commonly encountered problem Last Updated: 5/2/2003 12:58:35 PM
Platform:    All platforms Internal Tracking #:  
Resolution: None  Resolved in Build: : None
Duplicate of:  None
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: None
Description
The problem is, when I have DataExpress construct
statements to change this table, to delete for example, it places quotes around the table names, presumably to conform to SQLDialect 3.  But the database is Dialect 1, so it throws a BASE+66, Token Unknown exception.

Now, if I use the DataExpress Connection instead of the JdbcConnection like in my example, it works fine.  It's important for my projects to use JdbcConnection because of the need for a connection pooling mechanism, so
how do I tell DataExpress to use SQLDialect 1 while using a JdbcConnection?  Here's part of the stack trace I get when tring to delete:

See com.borland.dx.dataset.DataSetException error code:  BASE+66
com.borland.dx.dataset.DataSetException: [interclient][interbase] Dynamic
SQL Error
SQL error code = -104
Token unknown - line 1, char 12
"PROFILE"

at com.borland.dx.dataset.DataSetException.a(Unknown Source)
at com.borland.dx.dataset.DataSetException.throwException(Unknown Source)
Steps to Reproduce:
    .
    .
    .

    queryStr = "SELECT * FROM PROFILE ;" ;
    dataSource1.setServerName("localhost");
    dataSource1.setDatabaseName("/db/unittest.gdb");
    dataSource1.setUser("SYSDBA");
    dataSource1.setPassword("masterkey");
    dataSource1.setSQLDialect(1);
    connection1 = dataSource1.getConnection();
    database1.setSQLDialect(SQLDialect.INTERBASE);
    database1.setDatabaseName("unittest");
    database1.setJdbcConnection(connection1) ;

    queryDescriptor = new QueryDescriptor(database1, queryStr);
    queryDataSet1.setQuery(qd);
    jdbTable1.setDataSet(queryDataSet1);
    jdbNavToolBar1.setDataSet(queryDataSet1);

    .
    .
    .
Workarounds
Add the line "database1.setIdentifierQuoteChar(' ');" to fix the problem.  But this doesn't change the fact that DataExpress is using the wrong SQLDialect.
Attachment
None
Comments

None

Server Response from: ETNACODE01