Changes to DB are not persistent

[email protected] Tue, 21 Dec 2010 14:14:29 +0100
Newsgroups gmane.comp.openoffice.dba.devel
Message-ID <[email protected]>
Hello,

I am new to this list, hello everybody! I already posted the following
problem to [email protected], but here it is probably more
appropiate. Sorry!

I've a problem with a Base-Application (Basic). See below for a codesample.

The code is adding a row to a database (Base-Document with embedded
HSQL-DB) every time it gets called. However the changes are lost after
closing OOO. To make them permanent it's necessary to flush() the
DataSource.

First question: This is not exspected bahaviour, is it? Changes should
be persistently saved without calling flush(), or am I wrong?

But the trouble gets worse... The flush() - workaround works fine on
Linux (Using OOO 3.2.1 and 2.4 on Debian), but it crashes OOO 3.2.1 on
Windows (XP) ungracefully.

Any ideas? Thanx a lot,
Daniel


REM  *****  BASIC  *****
Option Explicit

REM Sub TestDB
REM Inserts a new row into a database every time it is executed
REM Requires a registered database called "test" with one column: "id"

Sub TestDB
	Dim DBContext, DataSource, Connection As Object
	Dim Statement, ResultSet As Object
	Dim NrOfRows As Integer
		
	REM Establish database connection
	DBContext = createUnoService("com.sun.star.sdb.DatabaseContext")
	DataSource = DBContext.getByName("test")
	Connection = DataSource.GetConnection("","")

	REM Insert a new row into database
	Statement = Connection.createStatement()
	Statement.executeUpdate("INSERT INTO ""test"" (""id"") VALUES (NULL)")
	
	REM Count rows in database, to check if insertion did work
	ResultSet = Statement.executeQuery("SELECT COUNT(*) FROM ""test""")

	ResultSet.next
  	NrOfRows = ResultSet.getInt(1)
  	
  	REM Show result
	MsgBox "Rows in database: " & NrOfRows
	
	REM The above code works, but changes to DB are not persistent.
	REM That means: after closing OOO the added rows are lost
	
	REM Flushing the DataSource helps, but ... (see mail)
	REM DataSource.flush()

End Sub