GTK3+Mysql C语言版图形数据库管理系统(一)

登录页面的制作+连接数据库

windows+visualstudio2019配置GTK3教程

软工大作业第一天记录
明天对登录页面进行优化加整数据库展示页面
登录页面

#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
#include <mysql.h>   //所需头文件
#include<stdlib.h>

#pragma comment (lib, "libmysql.lib")
MYSQL* conn_prt;     //创造一个MYSQL句柄
MYSQL_RES* res;
MYSQL_ROW row;

/*一些操作的命令起始部分*/
char select_head[50] = "select * from ";
char desc_head[50] = "desc ";
char insert_head[200] = "insert into ";
char drop_msg_head[50] = "delete from ";
char change_base_head[50] = "use ";

/*初始化mysql句柄*/
void self_init()
{
	conn_prt = mysql_init(NULL);
}

char* _(char* c)
{
    return(g_locale_to_utf8(c, -1, 0, 0, 0));
}

char* _2(const char* c)
{
    return(g_locale_to_utf8(c, -1, 0, 0, 0));
}
// 全局变量
GtkWidget* window_login;
GtkWidget* entry_login_username;
GtkWidget* entry_login_password;
GtkWidget* window_database;
void login_submit(GtkButton* button, gpointer user_data); // 登录按钮的回调事件
void login_reset(GtkButton* button, gpointer user_data); // 重置按钮的回调事件
void create_db_window(); // 创建数据库展示页面
int main(int argc, char* argv[]) {

    gtk_init(&argc, &argv);
    self_init();
    // ------------登录页面
    window_login = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    /*gtk_widget_set_size_request(window_login, 800, 500);*/
    gtk_window_set_title(GTK_WINDOW(window_login), _2("登录"));

    GtkWidget* table_login = gtk_table_new(3, 3, true); // 表格容器
    gtk_container_add(GTK_CONTAINER(window_login), table_login); // 将表格容器加到窗口中
    GtkWidget* label_login_username = gtk_label_new(_2("用户名")); // 用户名标签
    gtk_table_attach_defaults(GTK_TABLE(table_login), label_login_username, 0, 1, 0, 1); // 将用户名标签加到表格中
    entry_login_username = gtk_entry_new(); // 用户名输入框
    gtk_table_attach_defaults(GTK_TABLE(table_login), entry_login_username, 1, 3, 0, 1); // 将用户名输入框加到表格中
    GtkWidget* label_login_password = gtk_label_new(_2("密码")); // 密码标签
    gtk_table_attach_defaults(GTK_TABLE(table_login), label_login_password, 0, 1, 1, 2); // 将密码标签加到表格中
    entry_login_password = gtk_entry_new(); // 密码输入框
    gtk_table_attach_defaults(GTK_TABLE(table_login), entry_login_password, 1, 3, 1, 2); // 将密码输入框加到表格中
    gtk_entry_set_visibility(GTK_ENTRY(entry_login_password), false); // 设置密码输入框输入内容不可见
    GtkWidget* button_login = gtk_button_new_with_label(_2("登录")); // 登录按钮
    gtk_table_attach_defaults(GTK_TABLE(table_login), button_login, 0, 1, 2, 3); // 将登录按钮添加到表格中
    g_signal_connect(button_login, "pressed", G_CALLBACK(login_submit), NULL); // 设置登录按钮点击事件
    GtkWidget* button_reset = gtk_button_new_with_label(_2("重置")); // 重置按钮
    gtk_table_attach_defaults(GTK_TABLE(table_login), button_reset, 2, 3, 2, 3); // 将重置按钮添加到表格中
    g_signal_connect(button_reset, "pressed", G_CALLBACK(login_reset), NULL); // 设置重置按钮点击事件
    g_signal_connect(window_login, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_window_set_position(GTK_WINDOW(window_login), GTK_WIN_POS_CENTER_ALWAYS);
    gtk_widget_show(window_login);
    gtk_widget_show_all(window_login);
    gtk_main();

    return 0;
}
void login_submit(GtkButton* button, gpointer user_data)
{
    const char* username = gtk_entry_get_text(GTK_ENTRY(entry_login_username));
    const char* password = gtk_entry_get_text(GTK_ENTRY(entry_login_password));
    // printf("%s", username);
    if (!mysql_real_connect(conn_prt, "localhost", username, password, "mysql", 3306, NULL, 0))
    {
        printf("failed to connect:%s\n", mysql_error(conn_prt));
    }
    else {
        mysql_set_character_set(conn_prt, "gbk"); // 设置编码格式为gbk
        printf("connect success!\n");
        gtk_widget_hide(window_login);
        create_db_window();
    }

}

void login_reset(GtkButton* button, gpointer user_data)
{
    gtk_entry_set_text(GTK_ENTRY(entry_login_username), "");
    gtk_entry_set_text(GTK_ENTRY(entry_login_password), "");
}

void create_db_window()
{ // 展示数据库页面
    window_database = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window_database), _2("数据库展示页面"));
    g_signal_connect(window_database, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_window_set_position(GTK_WINDOW(window_database), GTK_WIN_POS_CENTER_ALWAYS);
    gtk_widget_show(window_database);
    gtk_widget_show_all(window_database);
}
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小陌白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值