On Saturday, January 20, 2007, 11:29:51 PM, RB 
Smissaert<sqlite-users@sqlite.org> wrote:
> 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]
> -----------------------------------------------------------------------------

Thanks to all. That did a very good job.


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

Reply via email to