Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## gudusoft.gsqlparser
Interface IMetaDatabase

    public interface IMetaDatabase

In order to link column to table correctly without connecting to database, we need to provide a class which implements IMetaDatabase to TGSqlParser. this class tells TGSqlParser the relation ship between column and table.

Take this SQL for example:

     SELECT Quantity,b.Time,c.Description
     FROM
     (SELECT ID2,Time FROM bTab) b
     INNER JOIN aTab a on a.ID=b.ID
     INNER JOIN cTab c on a.ID=c.ID

General SQL Parser can build relationship between column: ID2 and table: bTable correctly without metadata information from database because there is only one table in from clause. But it can't judge column: Quantity belong to table: aTab or cTab, since no table alias was prefixed to column: Quantity. If no metadata provided, General SQL Parser will link column: Quantity to the first valid table (here it is aTab)

If we create a class metaDB implements IMetaDatabase,then TGSqlParser.setMetaDatabase(new metaDB()), General SQL Parser can take this advantage to create a correct relationship between column and tables. Here is a sample of metaDB, you should create your own metaDB class with meta information from database.

###

     public class metaDB implements IMetaDatabase {

         String columns[][] = {
             {"dbo","aTab","Quantity1"},
             {"dbo","bTab","Quantity2"},
             {"dbo","cTab","Quantity"}
         };

         public boolean checkColumn(String schema, String table, String column){
            boolean bSchema,bTable,bColumn,bRet = false;
             for (int i=0; i<columns.length;i++){
                 if (schema == null){
                     bSchema = true;
                 }else{
                     bSchema = columns[i][0].equalsIgnoreCase(schema);
                 }

                 if (!bSchema) continue;

                 bTable = columns[i][1].equalsIgnoreCase(table);
                 if (!bTable) continue;

                 bColumn = columns[i][2].equalsIgnoreCase(column);
                 if (!bColumn) continue;

                 bRet =true;
                 break;

             }

             return bRet;
         }

     }

     After TGSqlParser.setMetaDatabase(new metaDB()), General SQL parser can generate this
     result for you:

     atab.id
     btab.id
     btab.time
     ctab.description
     ctab.id
     ctab.quantity

    Method Summary

     boolean
    checkColumn(java.lang.String schema,
                java.lang.String table,
                java.lang.String column)

              Implement this function to link column to table

    Method Detail

    checkColumn

    boolean checkColumn(java.lang.String schema,
                        java.lang.String table,
                        java.lang.String column)

    Implement this function to link column to table

    Parameters:schema - table - column -
    Returns:

          Overview
          Package
        Class
          Use
          Tree
          Deprecated
          Index
          Help

     PREV CLASS
     NEXT CLASS

      FRAMES
     NO FRAMES

      SUMMARY: NESTED | FIELD | CONSTR | METHOD

    DETAIL: FIELD | CONSTR | METHOD