1 message in org.openoffice.fr.prog[prog] Créer une DB à partir de Java
FromSent OnAttachments
Pascal RobertApr 27, 2006 1:16 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] Créer une DB à partir de JavaActions...
From:Pascal Robert (prob@os.ca)
Date:Apr 27, 2006 1:16:41 pm
List:org.openoffice.fr.prog

Bonjour,

je tente de créer une base de données de type texte-CSV à partir de code Java et j'ai de la difficulté à voir la table. La base de données (.odb) est créé au bon endroit, mais je ne vois pas de table dans OOo Base. Par contre, si je vérifie les propriétés de la base de données, la table apparaît par magie :-/ J'ai cherché en vain sur OOoForum et il semble que mon problème serait relié aux propriétés de la base, mais je crois avoir les bonnes :-( Voici mon code (basé sur un code snippet pour OOo 1.1) :

------------------------------------ public void createNewDataSource() {

try{

XSingleServiceFactory factory = (XSingleServiceFactory) UnoRuntime.queryInterface(XSingleServiceFactory.class, mxMSF.createInstance("com.sun.star.sdb.DatabaseContext"));

// Register it with the database context XNamingService xServ = (XNamingService) UnoRuntime.queryInterface(XNamingService.class, factory);

// Use the XSingleServiceFactory interface to instantiate an // empty data source Object dataSource = factory.createInstance();

XDocumentDataSource xDocumentDataSource = (XDocumentDataSource) UnoRuntime.queryInterface(XDocumentDataSource.class, dataSource);

XOfficeDatabaseDocument xDatabaseDocument = xDocumentDataSource.getDatabaseDocument();

XStorable store = (XStorable) UnoRuntime.queryInterface(XStorable.class, xDatabaseDocument); XModel model = (XModel) UnoRuntime.queryInterface(XModel.class, xDatabaseDocument); String storeFileName = "file:///Users/probert/Travail/OpenOffice/test.odb"; store.storeAsURL(storeFileName, model.getArgs());

xServ.registerObject(mDataSourceName, dataSource); XPropertySet props = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, dataSource);

props.setPropertyValue("URL", "sdbc:flat:file://" + mDataSourceDir + "/" + mDataSourceName); String tableFilter[] = new String[1]; tableFilter[0] = new String(mTableName);

props.setPropertyValue("TableFilter", tableFilter);

PropertyValue[] cProps = new PropertyValue[8]; cProps[0] = new PropertyValue(); cProps[0].Name = "Extension"; cProps[0].Value = "csv"; cProps[1] = new PropertyValue(); cProps[1].Name = "Charset"; cProps[1].Value = "windows-1252"; cProps[2] = new PropertyValue(); cProps[2].Name = "FixedLength"; cProps[2].Value = "True"; cProps[3] = new PropertyValue(); cProps[3].Name = "HeaderLine"; cProps[3].Value = "True"; cProps[4] = new PropertyValue(); cProps[4].Name = "FieldDelimiter"; cProps[4].Value = ","; cProps[5] = new PropertyValue(); cProps[5].Name = "StringDelimiter"; cProps[5].Value = "\""; cProps[6] = new PropertyValue(); cProps[6].Name = "DecimalDelimiter"; cProps[6].Value = "."; cProps[7] = new PropertyValue(); cProps[7].Name = "ThousandDelimiter"; cProps[7].Value = ";"; props.setPropertyValue("Info", cProps); props.setPropertyValue("User","probert");

store.store();

} catch(Exception e) { System.err.println ("Error creating data source: " + e); e.printStackTrace(); } }