Re: treeview, gtk and mysql



rupert wrote:

Great idea, the documentation is a bit complicated for me, so are
there more howtos for this(without line numbers) and with small examples?

It took me a lot to get started with it, specially because the api
changed just when i started...
je.

Also im not sure if I should use gnomedb or libgda to get my data out
of the DB.

You have to use both, libgda handles the database system and gnomedb
gives you widgets for showing/editing the data.

Can i handle a database in a xml file like a normal DB like mysql?
This would really remove the need to install mysql, if I ever make my
project public,
which  I would like because there is nothing like that for linux atm.

I dont know much about databases, ive just made a program wich uses one.
What i know is that libgda has a client wich uses a file for storing the
database and you can use regular sql with it. I alse saw something about
XML source, but dont knkow, sorry.


This is an example (from my app) wich (with all existing and created
with glade) shows a database on a grid:




void
on_ticket_view_show                    (GtkWidget       *widget,
                                        gpointer         user_data)
{
 GdaCommand *cmd;
 GdaDataModel *recset;
 GnomeDbGrid *grid;
 gchar *str;

 grid=GNOME_DB_GRID(lookup_widget(widget,"ticket_view_dbg"));

 /* Clear its content first */
 if ((recset=gnome_db_grid_get_model(grid))!=NULL)
    g_object_unref(G_OBJECT(recset));

 str=g_strdup_printf(
 "\"select producto as codigo ,(select nombre from productos where
id=producto) as descripcion,cantidad,(select publico from productos
where id=producto) as p_uni,total from detalles where codigo=%d\"",
 boa_fe.id
 );

 cmd = gda_command_new (
 str,
 GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
 recset = gda_connection_execute_single_command (boa_fe.conn, cmd, NULL);
 g_free(str);

 gnome_db_grid_set_model (grid,recset);
 gnome_db_grid_set_selection_mode(grid,GTK_SELECTION_SINGLE);

 gda_command_free (cmd);
 g_object_unref (G_OBJECT (recset));

 gtk_widget_grab_focus(lookup_widget(widget,"ticket_view_dbg"));
}


greets

On 3/19/06, *Juan Pablo* <jpdborgna yahoo com ar
<mailto:jpdborgna yahoo com ar>> wrote:

    You should use gnomedb.

    Saludos, Juan.

    rupert wrote:

    >Hello,
    >
    >im trying to create an application that uses a mysql database to
    get its
    >information,
    >first a treeview is created from the information stored in one
    column, than
    >when I select a row some more information should be displayed
    >as GTK Labels and a picture is shown for each row.
    >I have the whole thing working, with a simple treeview generated
    from data
    >stored in a textfile.
    >
    >How should I handle the database connection, i thought i can get
    the whole
    >data once and put it into different varibles,
    >but i havent found a way to extract the data from the rows.
    >right now im trying to give the select Title to my label display
    function
    >and do a query with "Select Info FROM table WHERE Title = "title"",
    >but i always get Segmentation faults as soon as i try to use a
    WHERE or
    >something else in may query.
    >In the top of my main() i have the connection and i just give the
    *my to the
    >functions where the queries are defined.
    >
    >Please give me some tips how I can solve this problem the best
    way, I think
    >having a global structe which i can access via if() or something
    would be
    >better than doing a SELECT everytime i need some information.
    >
    >
    >//__________Datenbank___________________________________________________________________
    >
    >    MYSQL          *my;
    >
    >   my = mysql_init(NULL);
    >
    >   if(my == NULL) {
    >
    >      fprintf(stderr, " Initialisierung fehlgeschlagen\n");
    >      return EXIT_SUCCESS;
    >   }
    >   /* Mit dem Server verbinden */
    >   if( mysql_real_connect (my, NULL, "root", NULL, "shdf", 0,
    NULL, 0)  ==
    >NULL)
    >           {
    >          fprintf (stderr, "Fehler mysql_real_connect():"
    >        "%u (%s)\n",mysql_errno (my), mysql_error (my));
    >           }
    >   else
    >      printf("Erfolgreich mit dem MySQL-Server verbunden\n");
    >
    >       /* Hier befindet sich der Code für die Arbeit mit MySQL */
    >     mysql_select_db(my, "shdf");
    >//_____________________________________________________________________________
    >
    >
    >//the function that fills the treeview list
    >
    >void make_list(GtkListStore *liste, GtkTreeIter iter, MYSQL *my){
    >
    >    MYSQL_ROW      row;
    >    MYSQL_RES      *result;
    >    MYSQL_FIELD *field;
    >
    >    gint i=0;
    >
    >    char *query;
    >    query = "SELECT Title FROM table WHERE nr < 107" ;
    >
    >    mysql_real_query(my, query, strlen(query));
    >    result = mysql_store_result(my);
    >
    >      while ((row = mysql_fetch_row (result)) != NULL)
    >    {
    >       mysql_field_seek (result, 0);
    >
    >       for (i = 0; i < mysql_num_fields(result); i++)
    >        {
    >         gtk_list_store_append(liste, &iter);
    >          gtk_list_store_set(liste, &iter, STRING_SPALTE,
    row[i],-1);
    >        }
    >
    >    }
    >
    >     free(query);
    >
    >greetings
    >_______________________________________________
    >gtk-app-devel-list mailing list
    > gtk-app-devel-list gnome org <mailto:gtk-app-devel-list gnome org>
    >http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
    >
    >
    >





    ___________________________________________________________
    1GB gratis, Antivirus y Antispam
    Correo Yahoo!, el mejor correo web del mundo
    http://correo.yahoo.com.ar





        
        
                
___________________________________________________________ 
1GB gratis, Antivirus y Antispam 
Correo Yahoo!, el mejor correo web del mundo 
http://correo.yahoo.com.ar 




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]