[Gambas-user] How do I get the database name from Connection.Databases
    Timothy Marshal-Nichols 
    timothy.marshal-nichols at ...247...
       
    Tue Apr 18 14:11:59 CEST 2006
    
    
  
Listing the databases on a connection and tables in a database is not as complex as you make out.  But a quick example may make things easier to understand.
PRIVATE SUB ListDatabases()
  DIM c AS NEW Connection
  DIM d AS Database
  c.Type = "mysql"
  c.Host = "localhost"
  c.Name = "" ' No need to set database name
  c.Login = "mysql"
  c.Password = "password"
  TRY c.Open
  IF ERROR THEN
    Message.Warning("Could not find databases\n\n" & ERROR.Text)
    RETURN
  END IF
  Listbox1.Clear()
  FOR EACH d IN c.Databases
    PRINT d.Name
    Listbox1.Add(d.Name)
  NEXT
  c.Close
END
PRIVATE SUB ListTables()
  DIM c AS NEW Connection
  DIM t AS Table
  c.Type = "mysql"
  c.Host = "localhost"
  c.Name = "GambasExample"
  c.Login = "mysql"
  c.Password = "password"
  TRY c.Open
  IF ERROR THEN
    Message.Warning("Could not find tables\n\n" & ERROR.Text)
    RETURN
  END IF
  Listbox1.Clear()
  FOR EACH t IN c.Tables
    PRINT t.Name
    Listbox1.Add(t.Name)
  NEXT
  c.Close
END
Thanks
8-{)} Timothy Marshal-Nichols
<mailto: timothy.marshal-nichols at ...247...>
-----Original Message-----
From: gambas-user-admin at lists.sourceforge.net
[mailto:gambas-user-admin at lists.sourceforge.net]On Behalf Of ron
Sent: Sunday, 16 April 2006 20:18
To: gambas-user at lists.sourceforge.net
Subject: [Gambas-user] How do I get the database name from
Connection.Databases
I want to get the names of the databases on a connection
dim hConn as connection
set user,pass etc and hConn.open
now I should be able to get from hConn.Dataases the names
but how ?
The local help says only: PROPERTY Databases AS Object
The website says:
-----------
Connection.Databases (gb.db)
PROPERTY Databases AS .ConnectionDatabases
-----------
the link: .ConnectionDatabases says:
.ConnectionDatabases (gb.db)
 This is a collection of all databases managed by the database server. 
 You may not see every database if the user you used to connect to the 
 server do not have sufficient rights. 
 This class inherits .SubCollection in gb - Gambas Internal native classes.
	In the link to 'gb - Gambas Internal native classes' 
	there is no sign of SubCollection ?
This class is enumerable with the FOR EACH keyword.
	Properties: Count & length
	Method: Add, Exist & Remove
note: bit stupid to generate keys for Exist() of 1...n char of a-zA-Z0-9 
-----------
for .SubCollection (gb) I get
  This virtual class is the parent class of every collection of sub-objects.
	Properties: Count & length
	Method: Exist
This class is enumerable with the FOR EACH keyword.
-----------
Both tell me the FOR EACH but how to do that excact?
FOR EACH Variable IN Expression
	Expression must be a reference to an enumerable object: for example, 
	a collection, or an array.
    The Expression is  .ConnectionDatabases or .SubCollection
    The Variable must be what kind of datatype if any
FOR EACH Expression
	This syntax must be used when Expression is a enumerable object that 
	is not a real container: for example, the result of a database query.
    FOR EACH hconn.Databases
      print hconn.Databases[key] ' the key is the thing I want
    NEXT
FOR Variable = Expression TO Expression [ STEP Expression ]
    FOR x = 0 TO hconn.Databases.length - 1
       print "database name=" & ????? hconn.Databases[x]
    NEXT
In hconn.Databases[x] x must be the key as string
If it is the name then it does not work, I don't know the names
and just want them.
If x can be a integer wich property tell me the name for that key as index?
Currently I do
PRIVATE SUB FillListBox(sql AS String, obj AS ListBox)
  DIM res AS Result 
  
  res = hconn.Exec(sql)
  WITH obj  
    .Clear
    WHILE res.Available
      .Add(res[0])
      res.MoveNext
    WEND 
  END WITH
END
PUBLIC SUB ListBoxDBUpdate()
  DIM sql AS String
  
  sql = "show databases"
  FillListBox(sql, ListboxDB)
END  
As work arround the res = hconn.Exec(sql).
However I should not use the .Exec as told in the help.
if hConn.Databases returns a String[] and the list property
of the listbox ask for a String[] the next line solved everything
ListBox1.list = hConn.Databases
For ListBox.List
	PROPERTY List AS String 
  Returns or sets the ListBox contents with a string. 
  Each element in the string must be delimited by a newline character. 
ListBox1.list = hConn.Databases.Join("\n")
ListBox1.list
So my request is what does Connection.Databases give me in real live.
In fact the Connection.Tables is the same problem.
----
mfg Ron
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Gambas-user mailing list
Gambas-user at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user
    
    
More information about the User
mailing list