As said you can run

pragma table_info(table)

in C as a query against the database table and it will give you all the info
you need without any awkward parsing.

RBS

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: 20 January 2007 20:05
To: RB Smissaert
Subject: [sqlite] Re: Table Schema

On Saturday, January 20, 2007, 8:31:09 PM, RB
Smissaert<sqlite-users@sqlite.org> wrote:
> I need table info all the time and I used to parse the table
sqlite_master,
> but as you say that is a bit of a hassle and I have now switched to using

> pragma table_info('" & strTable & "')

> This is a VB function, but you will get the idea:

> Function GetSQLiteTableInfo(strDB As String, _
>                             strTable As String, _
>                             Optional strFields As String, _
>                             Optional strSelect As String, _
>                             Optional strDataTypes As String, _
>                             Optional bCurrentConnection As Boolean) _
>                                         As Variant
>                             
>    'will produce the table fields as an 0-based 1-D array
>    'and make the strings:
>    'field1,field2,field3 etc.
>    'field1, field2, field3 etc.
>    'datatype1,datatype2,datatype3 etc.
>    '------------------------------------------------------
>    Dim r As Long
>    Dim c As Long
>    Dim strSQL As String
>    Dim rs2 As SQLiteDb.Recordset
>    Dim arr
>    Dim arr2

>    On Error GoTo ERROROUT

>    If bCurrentConnection = False Then
>       SetSQLiteConnection True, strDB
>    End If

>    strSQL = "pragma table_info('" & strTable & "')"
>    Set rs2 = SQLiteConn.Execute(strSQL)
>    arr = rs2.GetRows

>    ReDim arr2(0 To UBound(arr, 2))

>    For c = 0 To UBound(arr, 2)
>       arr2(c) = arr(1, c)
>       If c = 0 Then
>          strFields = arr2(c)
>          strSelect = arr2(c)
>          strDataTypes = arr(2, c)
>       Else
>          strFields = strFields & "," & arr2(c)
>          strSelect = strSelect & ", " & arr2(c)
>          strDataTypes = strDataTypes & "," & arr(2, c)
>       End If
>    Next

>    GetSQLiteTableInfo = arr2

>    If bCurrentConnection = False Then
>       CloseSQLiteConnection
>    End If

>    Exit Function
> ERROROUT:

>    If bCurrentConnection = False Then
>       CloseSQLiteConnection
>    End If

>    MsgBox Err.Description, , Erl

> End Function


> RBS


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> Sent: 20 January 2007 17:16
> To: Thomas Fjellstrom
> Subject: [sqlite] Re[2]: Table Schema; 2. Using this list

> On Saturday, January 20, 2007, 6:54:00 PM, Thomas
> Fjellstrom<sqlite-users@sqlite.org> wrote:
>> On Saturday 20 January 2007 6:29 am, [EMAIL PROTECTED] wrote:
>>> Mark Richards wrote:
>>> > [EMAIL PROTECTED] wrote:
>>> > > What is the easiest way to retrieve the structure of a table? The
> only
>>> > > thing i have found so far is by parsing the `sqlite_master`.`sql`
>>> > > which seems to be too much coding. I want them as (char**
>>> > > column_names), (char **column_types) or something similar.
>>> > > thanks in advance
>>> > > Ivailo Karamanolev
>>> >
>>> > .schema {tablename}
>>> >
>>> > sqlite3
>>> > .help
>>>
>>> 1. Isn't that supposed to return the SQL syntax for the table
>>> creation?
>>> 1.1. I would like to do this from the C API

>> exec ".schema tablename" from the C api's sql query function.

>>>
>>> 2. How am i supposed to write replies to someone's post in this mailing
>>> list?

>> Its email, select a message and press "reply".

>>> Thanks in advance.
>>> Ivailo Karamanolev
>>>
>>>
>>>
>
---------------------------------------------------------------------------
>>>-- To unsubscribe, send email to [EMAIL PROTECTED]
>>>
>
---------------------------------------------------------------------------
>>>--

> Am I stupid, or you assume something that I don't know for obvious?

> I wrote sqlite3_exec(...., ".shema test", ....). The response was:
>> Near ".": Syntax Error
> I wrote that in the sqlite3 command line utility, except that it
> returned nothing (just wrote sqlite3> again) which is offtopic, I
> assume that it must print something similar to
> CREATE TABLE `test` (...... )
> which I already achieved by accessing `sqlite_master`.`sql` field.
> However, that is not precisely what I want, because I still must parse
> the "CREATE TABLE" SQL syntax myself, which is way too much coding. Is
> there another, simpler way, or I must satisfy myself with the need to
> parse SQL?

> PS. To all developers of SQLite - I am surprised to see so good piece
> of C code :)

> Thanks in advance,
> Ivailo Karamanolev.


>
----------------------------------------------------------------------------
> -
> To unsubscribe, send email to [EMAIL PROTECTED]
>
----------------------------------------------------------------------------
> -




>
----------------------------------------------------------------------------
-
> To unsubscribe, send email to [EMAIL PROTECTED]
>
----------------------------------------------------------------------------
-

As you probably suspect, I have NO IDEA of that VB syntax and sadly I
have no intention of digging into it. My question is: is there
equivalent in C API or any way of porting this to C? Or else if
someone suggests another way of easily acquiring the schema of a
table...

Thanks in advance,
Ivailo Karamanolev


----------------------------------------------------------------------------
-
To unsubscribe, send email to [EMAIL PROTECTED]
----------------------------------------------------------------------------
-




-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to