Am Samstag, den 23.11.2013, 11:25 -0700 schrieb paulwheeler: > I am trying to get a list of the tables in a SQLite database. > > According to SQLite.org the table called "sqlite_master" lists all the tables > and indices in the DB[1]. I have a SQlite browser tool that seems to confirm > that, because it returns table names from the target DB, when this is > executed: SELECT 'tables' from SQLITE_MASTER > > My problem is getting the table names and the fields in each of the tables of > a Database with an unknown structure. For this project, I do not know the > name of the fields, because I am looking at DB's created by someone else. > That means that the example included in the definition of "For Each" will not > work. [0] > > Using Gambas, I connect to the SQlite database, then do a query: > > Public Sub DisplayDbInfo() > > Dim strDbTablesQuery As String ' The string that is the select > statement > Dim rsDbTableInfo As Result > > strDbTablesQuery = "Select name From sqlite_master WHERE type = 'table' > ORDER BY name" > > rsDbTableInfo = $hConn.Exec(strDbTablesQuery) > ' For debugging: > Print "Num of Tables = " & rsDbTableInfo.Count ' 9 Tables > Print "rsDbTableInfo.max = " & rsDbTableInfo.Max ' 8 > Print "Num of Fields returned = " & rsDbTableInfo.Fields.Count > > For intCount = 0 To rsDbTableInfo.Fields.Count - 1 ' Number of Fields > found > Print "rsDbTableInfo.Fields[i] = " & > Str(rsDbTableInfo.Fields[intCount]) > Next > > > However, all I get from the previous lines is this: (ResultField > 0x1aa6718). > > > I tried using 'Result', 'ResultField', 'Result.Felds' and other things, > but I cannot get field names. > > > How do I get the actual name of the field? > > paul >
Salut Paul, this is out from DB-diff3 (you can get the whole code from here : http://dashboard68.users.sourceforge.net/ ) Private Function fill_Fields(tbl As Table) As Collection Dim fld As Field Dim sKeyPraefix As String = tbl.Name & sSep & "FIELDS" & sSep Dim colFields As New Collection Dim clsFld As ClsFields Dim sPKey As String For Each fld In tbl.Fields sPKey = Upper(sKeyPraefix & fld.Name) clsFld = New ClsFields clsFld.Key = sPKey clsFld.fldDefault = fld.Default clsFld.fldLength = fld.Length clsFld.fldName = fld.Name clsFld.fldTable = fld.Table clsFld.fldType = fld.Type colFields.Add(clsFld, sPKey) Next Return colFields End -- Amicalement Charlie ------------------------------------------------------------------------------ Shape the Mobile Experience: Free Subscription Software experts and developers: Be at the forefront of tech innovation. Intel(R) Software Adrenaline delivers strategic insight and game-changing conversations that shape the rapidly evolving mobile landscape. Sign up now. http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user