IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> GTK3+Mysql C语言版图形数据库管理系统(一) -> 正文阅读

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

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

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

#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);
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:39:55  更:2021-11-12 19:40:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:39:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码