GTK + operation mysql database sample program version 1.0

xiaoxiao2021-03-06  42

/ * Author: wide288 Time: 2005-2-23 Lantern wide288 @ 0 [tempc2] $ cat makefile CC = gcc LIB = -I / usr / include / mysql -L / usr / lib / mysql -lmysqlclient all: $ ( CC) -o create create.c $ (lib) `PKG-Config gtk -2.0 --cflags --libs` wide288 @ 0 [Tempc2] $ * / #include

#include

#define DEF_HOST_NAME "localhost" #define DEF_USER_NAME "wide288" #define DEF_PASSWORD "123" #define DEF_DATABASE "lcrj" MYSQL * myconnect = NULL; gboolean isclosed = TRUE; gboolean iscreate = TRUE; static GtkWidget * dialog = NULL; static GtkWidget * entry = NULL; static GtkWidget * table_dialog = NULL; static GtkWidget * db_entry = NULL; static GtkWidget * text = NULL; static GtkTextBuffer * text_buffer; gboolean isok = FALSE; static GtkWidget * drop_table_dialog = NULL; static GtkWidget * drop_db_entry = NULL; static GtkWidget * drop_table_entry = NULL; static GtkTextBuffer * message_buffer; static GtkWidget * mlabel; void create_message_dialog (GtkMessageType type, gchar * message) {GtkWidget * dialogx; dialogx = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_OK, message); gtk_dialog_run ( GTK_DIALOG (Dialogx); gtk_widget_destroy (DialogX);} void on_dialog_yes (gtkbutton * button, gpointer data) {gchar query_buf [4096]; const gchar * dbname; dbname = g tk_entry_get_text (GTK_ENTRY (entry)); if (iscreate == TRUE) {sprintf (query_buf, "CREATE DATABASE% s", dbname); if (mysql_query (myconnect, query_buf) == 0) {create_message_dialog (GTK_MESSAGE_INFO, "successfully created database! ");} else {create_message_dialog (gtk_message_error," Create Database When I'm a Database! ");}} else {sprintf (Query_buf," DROP DATABASE% S ", DBNAME); if (MySQL_Query (MyConnect, query_buf) == 0) { CREATE_MESSAGE_DIALOG (GTK_MESSAGE_WARNING, "Database has been deleted!");} else {create_message_dialog (gtk_message_error, "Delete Database!");}} GTK_WIDGET_DESTROY (Dialog);

} Void on_dialog_no (GtkButton * button, gpointer data) {gtk_widget_destroy (dialog);} void create_run_dialog (gchar * title) {GtkWidget * label, * vbox, * button, * sep, * hbox; dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (dialog), title); g_signal_connect (G_OBJECT (dialog), "delete_event", G_CALLBACK (gtk_widget_destroy), dialog); gtk_container_set_border_width (GTK_CONTAINER (dialog), 10); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (dialog), vbox); label = gtk_label_new ( "enter the database name:"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 5); entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 5); sep = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 5); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE , 5); Button = gtk_button_new_from_stock (gtk_stock_yes); g_signal_connect (g_object (button), "clicked", g_callback (on_dialog_yes), null); gtk_box_pack_start (gtk_box (HB ox), button, FALSE, FALSE, 5); gtk_widget_show_all (dialog);} void on_db_use (GtkButton * button, gpointer data) {const char * query; char query_buf [1024]; query = gtk_entry_get_text (GTK_ENTRY (db_entry)); Sprintf (query_buf, "us% s", query); if (mysql_query (myconnect, query_buf) == 0) {create_message_dialog (gtk_message_info, "database selection success! "); Gtk_widget_set_sensitive (db_entry, FALSE);} else {create_message_dialog (GTK_MESSAGE_ERROR," Error selected database ");!}} Void on_create_table_yes (GtkButton * button, gpointer data) {gchar * sql_query; GtkTextIter iter1, iter2; gtk_text_buffer_get_start_iter ( Text_buffer, & it1);

gtk_text_buffer_get_end_iter (text_buffer, & iter2); sql_query = gtk_text_buffer_get_text (text_buffer, & iter1, & iter2, FALSE); if (mysql_query (myconnect, sql_query) == 0) {create_message_dialog (GTK_MESSAGE_INFO, "successfully create tables!");} else {create_message_dialog (GTK_MESSAGE_ERROR, "an error running SQL statement!");}} void create_table_dialog (gchar * title) {GtkWidget * vbox, * hbox, * label, * button, * viewport; table_dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW ( table_dialog), title); g_signal_connect (G_OBJECT (table_dialog), "delete_event", G_CALLBACK (gtk_widget_destroy), table_dialog); gtk_container_set_border_width (GTK_CONTAINER (table_dialog), 10); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (table_dialog) , vbox); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5); label = gtk_label_new ( "database name:"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE , False, 5); DB_ENTRY = gtk_entry_new (); gtk_box_pack_start (gtk_box (hbox), DB_ENTRY, FA LSE, FALSE, 5); button = gtk_button_new_with_label ( "choice"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_db_use), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 5) ; hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5); viewport = gtk_viewport_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (hbox), viewport, TRUE, TRUE, 5) ; text = gtk_text_view_new (); gtk_container_add (GTK_CONTAINER (viewport), text); text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 5 );

Label = gtk_label_new ("Please enter the / n-based data table / nsql statement in the left / n text input area / n domain, / n Click on the / n button below to create data / n operations "); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 5); button = gtk_button_new_with_label (" Create data sheet "); g_signal_connect (G_OBJECT (button)," clicked ", G_CALLBACK (on_create_table_yes), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5); gtk_widget_show_all (table_dialog);} void on_drop_table_yes (GtkButton * button, gpointer data) {gchar query_buf [4096]; const gchar * dbname, * tablename; dbname = gtk_entry_get_text ( GTK_ENTRY (drop_db_entry)); tablename = gtk_entry_get_text (GTK_ENTRY (drop_table_entry)); sprintf (query_buf, "USE% s", dbname); if (mysql_query (myconnect, query_buf) == 0) {sprintf (query_buf, "DROP TABLE% s ", tablename); if (mysql_query (myconnect, query_buf) == 0) {create_message_dialog (GTK_MESSAGE_WARNING," database has been opened, the data table has been successfully deleted! ");} else {create_message_dialog (GTK_MESSAGE_ERROR," database has been opened, but the data Table is not deleted! ");}} Else {create_message_dialog (gtk_message_error," Out of the Database! ");} Gtk_widget_destroy p_table_dialog);} void on_drop_table_no (GtkButton * button, gpointer data) {gtk_widget_destroy (drop_table_dialog);} void create_drop_table_dialog (gchar * title) {GtkWidget * vbox, * hbox, * label, * button, * sep; drop_table_dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL ); gtk_window_set_title (GTK_WINDOW (drop_table_dialog), title); g_signal_connect (G_OBJECT (drop_table_dialog), "delete_event", G_CALLBACK (gtk_widget_destroy), drop_table_dialog); gtk_container_set_border_width (GTK_CONTAINER (drop_table_dialog), 10); vbox = gtk_vbox_new (FALSE, 0);

gtk_container_add (GTK_CONTAINER (drop_table_dialog), vbox); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5); label = gtk_label_new ( "open database:"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 5); drop_db_entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), drop_db_entry, FALSE, FALSE, 5); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox) , hbox, FALSE, FALSE, 5); label = gtk_label_new ( "want to delete data table:"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 5); drop_table_entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX ( hbox), drop_table_entry, FALSE, FALSE, 5); sep = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 5); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5); button = gtk_button_new_from_stock (GTK_STOCK_YES); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_drop_table_yes), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 5) ; B utton = gtk_button_new_from_stock (GTK_STOCK_NO); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_drop_table_no), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 5); gtk_widget_show_all (drop_table_dialog);} gboolean my_connect1 () {myconnect = mysql_init (myconnect); if (mysql_real_connect (myconnect, DEF_HOST_NAME, DEF_USER_NAME, DEF_PASSWORD, DEF_DATABASE, MYSQL_PORT, NULL, 0)) {return TRUE;} else {myconnect = NULL; return FALSE;}} void my_disconnect ( ) {mysql_close (MyConnect); myconnect = null;} void on_button_connect (gtkbutton * button, gpointr data) {if (my_connect1 () ==

False) {gtk_label_set_text (gtk_label (mLabel), "Error: You cannot connect to the database server.");} Else {gtk_label_set_text (gtk_label), "information: success with the database server connection."); Isclosed = false;}} Void on_button_disconnect (gtkbutton * button, gpointer data) {my_disconnect (); isclosed = true; gtk_label_set_text (gtk_label (mlabel), "Note: Successfully disconnected with the database server.

");} Void on_create (GtkButton * button, gpointer data) {create_run_dialog (" Create mysql database "); iscreate = TRUE;} void on_drop (GtkButton * button, gpointer data) {create_run_dialog (" Delete mysql database "); iscreate = FALSE;} void on_create_table (GtkButton * button, gpointer data) {create_table_dialog ( "Create data sheet");} void on_drop_table (GtkButton * button, gpointer data) {create_drop_table_dialog ( "delete data sheet");} void on_delete_event (GtkWidget * widget, GdkEvent * event, gpointer data) {if (isclosed == FALSE) {my_disconnect (); create_message_dialog (GTK_MESSAGE_INFO, "successfully disconnected from the server!");} gtk_main_quit ();} int main (int argc, char * argv []) {GtkWidget * window; GtkWidget * vbox1, * hbox, * vbox, * viewport; GtkWidget * button, * message; GtkTextIter iter; gtk_init (& argc, & argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (Window), "delete_event", g_callback; gtk_window_set_title (gtk_window (window), "Create / Remove Database and Data Sheet"); gtk_window_set_position (gtk_window (window), gtk_win_pos_CEN TER); gtk_container_set_border_width (GTK_CONTAINER (window), 10); vbox1 = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), vbox1); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox1), hbox, FALSE, FALSE, 5); message = gtk_text_view_new (); gtk_box_pack_start (GTK_BOX (hbox), message, TRUE, TRUE, 5); message_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (message)); gtk_text_buffer_get_end_iter (message_buffer, & iter); gtk_text_buffer_insert (message_buffer, & it, "This is used to display some data information related to software / n. / N can find this code in the program, / n and apply it to your own callback function.

/ N and mysql database server connection / N requires parameters such as servers, usernames / n, and passwords, these parameters / n settings can be found in MySQL's help / n document, Mysql's C language / n-say API details The description can also be found in this document. ", -1); vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 5); button = gtk_button_new_with_label (" connected server "); g_signal_connect (G_OBJECT (button)," clicked ", G_CALLBACK (on_button_connect), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5); button = gtk_button_new_with_label (" OFF "); g_signal_connect (G_OBJECT (button)," clicked ", G_CALLBACK (on_button_disconnect ), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5); button = gtk_button_new_with_label ( "create database"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_create), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5); button = gtk_button_new_with_label ( "delete database"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_drop), NULL); gtk_box_pack_start (GTK_BOX (vbox ), button, FALSE, FALSE, 5); button = gtk_button_new_with_label ( "Create data sheet"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_create_table), NULL); gtk_box_pack_start (GTK_BOX (vbox), butto n, FALSE, FALSE, 5); button = gtk_button_new_with_label ( "Delete Data Sheet"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_drop_table), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5); viewport = gtk_viewport_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (vbox1), viewport, FALSE, FALSE, 5); mlabel = gtk_label_new ( "here may display a message"); gtk_container_add (GTK_CONTAINER (viewport ), mLabel); gtk_widget_show_all (window); gtk_main (); return false;} / * This example is written in writing a financial software and has multiple books.

转载请注明原文地址:https://www.9cbs.com/read-54614.html

New Post(0)