Rispondo solo ora perchè in questi giorni ho un pòtralascaito il problema..cmq... ho controlllato e sembra che tutti i passaggi siano corretti.. cmq ho modificato un pò il prog cercando di far tutto in java... per il parser poi ci si pensa... così da esser sicuro degli assegnamenti.. e beh non credo che l'erroe dipenda da qui... perchè sostanzialmente il nome del DB viene passato come stringa nel main al costruttore:
codice:
try{
dbGenerator = new SchemaDrivenSyntheticRelationalDataGenerator("sun.jdbc.odbc.JdbcOdbcDriver",
"Jdbc:Odbc:FATTUREDB.mdb",
6, symbolArrayForKeyGeneration,
5, 10000);
Il nome del driver per DB access è giusto vero???
Qu ti faccio vedere un pò il costruttore...
codice:
SchemaDrivenSyntheticRelationalDataGenerator(String driverSignature, String dataSourceSignature,
int keySymbolNumber,
char[] symbolArrayForKeyGeneration,
int masterTableNumber,
int tupleNumberForTable) throws Exception{
this.driverSignature = driverSignature;
this.dataSourceSignature = dataSourceSignature;
this.keySymbolNumber = keySymbolNumber;
this.symbolArrayForKeyGeneration = symbolArrayForKeyGeneration;
this.masterTableNumber = masterTableNumber;
this.tupleNumberForTable = tupleNumberForTable;
int totalDistinctKeyNumber = (int)Math.pow(keySymbolNumber, symbolArrayForKeyGeneration.length);
int distinctKeyNumberForTable = totalDistinctKeyNumber / masterTableNumber;
if (tupleNumberForTable > distinctKeyNumberForTable){
throw new Exception("Attention! The input parameters are inconsistent! It is not possible to generate " +
tupleNumberForTable + " distinct keys with length equal to " + keySymbolNumber +
" for " + masterTableNumber + " master tables by using " +
symbolArrayForKeyGeneration.length + " symbols!");
//Il codice continua con assegnazioni non riguardanti la connessione al db..
Per inizializzare la connessione richiamo da main il metodo che ti ho postato su....
e poi lo utilizzo tramite degli statement scritti nei metodi dell'oggetto..
codice:
try{
System.out.println("Populating table " + tableName.toUpperCase() + " starts...");
stm = conn.createStatement();
rst = stm.executeQuery("SELECT * FROM " + tableName);
rstMetaData = rst.getMetaData();
attributeNumber = rstMetaData.getColumnCount();
while (tupleCounter < numberOfTuplesToBeGenerated){
attributeCounter = 1;
syntheticAttributeDataDefinitionIndexer = 0;
while (attributeCounter <= keyNumber){
attributeType = rstMetaData.getColumnType(attributeCounter);
if (attributeType == Types.VARCHAR){
if (executionCode == 0){
twoLevelClusterIndex = (Vector)twoLevelClusterIndexVector.get(attributeCounter - 1);
stringRandomKey = (String)((ClusterInfo)twoLevelClusterIndex.get(firstLevelClusterIndexIndexer)).obj1;
secondLevelClusterIndex = (Vector)((ClusterInfo)twoLevelClusterIndex.get(firstLevelClusterIndexIndexer)).obj2;
stringRandomKey = stringRandomKey +
(String)((ClusterInfo)secondLevelClusterIndex.get(secondLevelClusterIndexIndexer)).obj1;
randomKeyCluster = (Vector)((ClusterInfo)secondLevelClusterIndex.get(secondLevelClusterIndexIndexer)).obj2;
sortedObjectArray = randomKeyCluster.toArray();
Arrays.sort(sortedObjectArray);
stringRandomKeyTmp = getStringRandomKey(keySymbolNumber - 2);
while (Arrays.binarySearch(sortedObjectArray, stringRandomKeyTmp) >= 0){
stringRandomKeyTmp = getStringRandomKey(keySymbolNumber - 2);
System.out.print(".");
}
Spero che così sia più chiaro.. non riesco a capire da cose possa dipendere sto errore...