linux下C语言与GTK3.0实现数据库(sqlite3)课程设计-客户运送(client transportation)


课程设计涉及到的内容:

  • 编程语言:C语言
  • 图形界面:GTK3.0
  • 数据库:sqlite3

参考的这篇文章:【linux下用C语言编写带图形界面的交通违章管理系统附带源代码】
某多多花了一块多买了里面的代码参考,分享出来:点击网盘获取

安装sqlite3数据库的可以参考这篇文章:Linux上源码安装sqlite3(图文并茂)

1- GTK3.0安装步骤

(1)安装GNU编译链接工具

    sudo apt-get install build-essential

(2)安装gtk,可以使用如下指令同时安装两个版本gtk2和gtk3:

    sudo apt-get install gnome-core-devel

如果安装失败,可以直接安装gtk3,命令如下:

    sudo apt-get install libgtk-3-dev

(3)安装pkg-config用于自动查找gtk的头文件位置

    sudo apt-get install pkg-config

(4)安装完成后,可以使用以下命令来校验安装是否成功,并查看GTK+3.0所包含的所有头文件以及库的路径:

    pkg-config --cflags --libs gtk+-3.0

(5)GTK测试
编写测试代码:

  #include<gtk/gtk.h>

  int main(int argc,char *argv[])
  {

    GtkWidget *window;

    gtk_init(&argc,&argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

  g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
  gtk_window_set_title(GTK_WINDOW(window),"Hello World!");
  gtk_widget_show(window);

  gtk_main();

  return 0;
}

编译:

    gcc -o test test.c `pkg-config --cflags --libs gtk+-3.0`

运行:

    ./test

在这里插入图片描述
成功。


2- 表格信息

Client:
在这里插入图片描述
Office:
在这里插入图片描述
ClientOrder:
在这里插入图片描述
Trailer:
在这里插入图片描述
Unit:
在这里插入图片描述
TransportReqts:
在这里插入图片描述


3- 课程设计界面

登录界面:
在这里插入图片描述

菜单界面:
在这里插入图片描述
插入数据(四个表格分别插入):
在这里插入图片描述
查看数据(clientNo为主搜索):
在这里插入图片描述
更新数据(以主键为主更新):
在这里插入图片描述
删除数据:
在这里插入图片描述
终端显示:
在这里插入图片描述
sqlite3数据库(六个表格,主键外键看代码):
在这里插入图片描述
成功或者失败都是会有提示的。在整个设计中主要是单位格子的获取比较麻烦,这个搞懂了其他的就比较简单了。


4- 源代码

因为是GTK3.0,所以很多函数都更新了,有些函数是不能用的,在做的过程中也是遇到了,所以算是最新版本的吧。

#include <stdio.h>
#include <gtk/gtk.h>
#include <sqlite3.h>
#include <string.h>

void login();//登陆窗口函数
int create_database_tables();//创建数据库以及创建表格函数
void window_init(GtkWidget *window);//gtk初始化函数(创建表前提)
static int callback(void *data, int argc, char **argv, char **azColName);//数据库回调函数
void success_tips();//操作成功小窗口
void failed_tips();//操作失败小窗口

void deal_pressed_view(GtkButton *button, gpointer user_data);//查找数据按键操作函数
void window_view(GtkWidget *button, GtkWidget * shuzu[20]);//查找操作函数
void deal_pressed_back_view(GtkButton *button, gpointer user_data);//返回菜单函数

void deal_pressed_insert(GtkButton *button, gpointer user_data);//插入数据按键操作函数
void deal_pressed_back_insert(GtkButton *button, gpointer user_data);//返回菜单函数
void insert_Client(GtkButton *button, gpointer user_data);//Client插入按键回调函数
void insert_Office(GtkButton *button, gpointer user_data);//Office插入按键回调函数
void insert_ClientOrder(GtkButton *button, gpointer user_data);//ClientOrder插入按键回调函数
void insert_Trailer(GtkButton *button, gpointer user_data);//Trailer插入按键回调函数
void insert_Unit(GtkButton *button, gpointer user_data);//Unit插入按键回调函数
void insert_TransportReqts(GtkButton *button, gpointer user_data);//TransportReqts插入按键回调函数

void deal_pressed_update(GtkButton *button, gpointer user_data);//更新数据按键操作函数
void deal_pressed_back_update(GtkButton *button, gpointer user_data);//更新数据隐藏函数
void update_date(GtkButton *button, gpointer user_data);//更新按键回调函数

void deal_pressed_delete(GtkButton *button, gpointer user_data);//删除数据按键操作函数
void deal_pressed_back_delete(GtkButton *button, gpointer user_data);//删除数据隐藏函数
void delete_date(GtkButton *button, gpointer user_data);//删除按键回调函数

sqlite3 *db;
char * client;
char * office;
char * clientorder;
char * trailer;
char * transportreqts;
char * unit;
char * table[40] = {""};//查看数据用到的数组
const gchar * client_data[15] ={""};//回调函数保存数据指针数组
GtkWidget   * window;//菜单初始化窗口
GtkWidget   * login_window;//登录界面
GtkWidget   * view_window;//查找数据
GtkWidget   * insert_window;//插入数据
GtkWidget   * delete_window;//删除数据
GtkWidget   * update_window;//更新数据
GtkWidget   * delete_label;//删除数据(空白获取)

//假设的用户名和密码
const gchar * name1 = "12345";
const gchar * passwd1 = "12345";

//点击登录按钮后处理事件
void login_button_click(GtkWidget*button, gpointer userdata);
void quxiao_button_click(GtkWidget*button, gpointer userdata);

//文本输入框,用户名及密码
GtkWidget * name;
GtkWidget * passwd;

//登录界面大小
const int LOGIN_WIDTH = 500;
const int LOGIN_HEIGHT = 300;

//普通界面窗口大小;
const int WIDTH = 1500;
const int HEIGHT = 1000;

/*插入数据键盘输入内容保存*/
/*Client*/     /*ClientOrder*/  /*Office*/    /*Trailer*/    /*Unit*/
GtkWidget *n1;  GtkWidget *m1; GtkWidget *o1; GtkWidget *p1; GtkWidget *q1; GtkWidget *r1;
GtkWidget *n2;  GtkWidget *m2; GtkWidget *o2; GtkWidget *p2; GtkWidget *q2; GtkWidget *r2;
GtkWidget *n3;  GtkWidget *m3; GtkWidget *o3; GtkWidget *p3; GtkWidget *q3; GtkWidget *r3;
GtkWidget *n4;  GtkWidget *m4; GtkWidget *o4; GtkWidget *p4; GtkWidget *q4;
GtkWidget *n5;  GtkWidget *m5;                GtkWidget *p5;
GtkWidget *n6;  GtkWidget *m6;
GtkWidget *n7;  GtkWidget *m7;
GtkWidget *n8;  GtkWidget *m8;
GtkWidget *n9;  GtkWidget *m9;
GtkWidget *n10; 
GtkWidget *n11; 
GtkWidget *n12; 
GtkWidget *n13; 
GtkWidget *n14; 

/*更新数据键盘输入内容保存*/
/*Client*/     /*ClientOrder*/  /*Office*/    /*Trailer*/    /*Unit*/
GtkWidget *a1;  GtkWidget *b1; GtkWidget *c1; GtkWidget *d1; GtkWidget *e1; GtkWidget *f1;
GtkWidget *a2;  GtkWidget *b2; GtkWidget *c2; GtkWidget *d2; GtkWidget *e2; GtkWidget *f2;
GtkWidget *a3;  GtkWidget *b3; GtkWidget *c3; GtkWidget *d3; GtkWidget *e3; GtkWidget *f3;
GtkWidget *a4;  GtkWidget *b4; GtkWidget *c4; GtkWidget *d4; GtkWidget *e4;
GtkWidget *a5;  GtkWidget *b5;                GtkWidget *d5;
GtkWidget *a6;  GtkWidget *b6;
GtkWidget *a7;  GtkWidget *b7;
GtkWidget *a8;  GtkWidget *b8;
GtkWidget *a9;  GtkWidget *b9;
GtkWidget *a10;
GtkWidget *a11;
GtkWidget *a12;
GtkWidget *a13;
GtkWidget *a14;

//主函数开始
int main(int argc, char *argv[])
{
    create_database_tables();
    gtk_init(&argc, &argv);//初始化
    login();
    // window_main();//window主菜单初始化函数

    sqlite3_close(db);//关闭数据库
    return 0;
}


void delete_date(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    const gchar *data = gtk_entry_get_text(GTK_ENTRY(delete_label));
    char sql_delete[50] = "DELETE from Client where clientNo = ";
    /* Create SQL statement */
    if(strlen(data) != 0)
    {
        strcat(sql_delete, data);
        g_print("%s\n",sql_delete);
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_delete, callback, (void*)data, &zErrMsg);
        if( rc != SQLITE_OK )
        {
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }
        else
        {
            success_tips();
        }
    }
}

/*删除函数回调函数*/
void deal_pressed_delete(GtkButton *button, gpointer user_data)
{   
    GtkWidget * fixed;
    GtkWidget * label;

    const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
    g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char

    gtk_widget_hide(window);//隐藏菜单函数    
    delete_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口 
    window_init(delete_window);//界面初始化

    fixed = gtk_fixed_new();//创建一个固定布局容器fixed

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(delete_window), fixed);

    GtkWidget *back = gtk_button_new_with_label("返回");
    gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
    g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_delete), NULL);

    GtkWidget *tips = gtk_label_new("Please enter the clientNo you want to delete ");
    gtk_fixed_put(GTK_FIXED(fixed), tips, 100, 108);
    delete_label = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), delete_label, 430, 100);

    GtkWidget *delete = gtk_button_new_with_label("DELETE");
    gtk_fixed_put(GTK_FIXED(fixed), delete, 620, 100);
    g_signal_connect(delete, "pressed", G_CALLBACK(delete_date), NULL);

    gtk_widget_show_all(delete_window);//显示所有控件
    gtk_main();
}

/*更新获取内容函数*/
void update_date(GtkButton *button, gpointer user_data)
{   
    char *zErrMsg=0;
    char sql_clientNo[40] = "where clientNo = ";
    char sql_client[100]= "update Client set clientName ='";

    char sql_client_order[80] = "where orderNo = ";
    char sql_client_office[80] = "where officeNo = ";
    char sql_client_trailer[80] = "where trailerVehLicenseNo = ";
    char sql_client_unit[80] = "where unitVehLicenseNo = ";
    const gchar *data = gtk_entry_get_text(GTK_ENTRY(a1));
    /* Create SQL statement */
    if(strlen(data) != 0)
    {    
        strcat(sql_clientNo, data);
    }
    g_print("%s\n",sql_clientNo);
    data = gtk_entry_get_text(GTK_ENTRY(a2));
    /*获取第一个数据修改2*/
    if(strlen(data) != 0)
    {   
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }    
    /*获取第二个数据修改3*/
    data = gtk_entry_get_text(GTK_ENTRY(a3));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set clientStreet ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第三个数据修改4*/
    data = gtk_entry_get_text(GTK_ENTRY(a4));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set clientCity ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第4个数据修改5*/
    data = gtk_entry_get_text(GTK_ENTRY(a5));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set clientState ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第5个数据修改6*/
    data = gtk_entry_get_text(GTK_ENTRY(a6));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set clientZipCode ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第6个数据修改7*/
    data = gtk_entry_get_text(GTK_ENTRY(a7));
    if(strlen(data) != 0)
    {    
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Client set  clientTelNo ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第7个数据修改8*/
    data = gtk_entry_get_text(GTK_ENTRY(a8));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set clientFaxNo ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第8个数据修改9*/
    data = gtk_entry_get_text(GTK_ENTRY(a9));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set clientWebAddress ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第9个数据修改10*/
    data = gtk_entry_get_text(GTK_ENTRY(a10));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set contactName ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第10个数据修改11*/
    data = gtk_entry_get_text(GTK_ENTRY(a11));
    if(strlen(data) != 0)
    {    
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set contactTelNo ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第11个数据修改12*/
    data = gtk_entry_get_text(GTK_ENTRY(a12));
    if(strlen(data) != 0)
    {
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set contactFaxNo ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第12个数据修改13*/
    data = gtk_entry_get_text(GTK_ENTRY(a13));
    if(strlen(data) != 0)
    {
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set contactEmailAddress ='");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第13个数据修改14*/
    data = gtk_entry_get_text(GTK_ENTRY(a14));
    if(strlen(data) != 0)
    {
        memset(sql_client,0,sizeof(sql_client));
        strcat(sql_client, "update Client set officeNo =");
        strcat(sql_client, data);
        strcat(sql_client, sql_clientNo);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*以上都是修改client表格数据的*/
    /*获取第1个数据修改*/
    data = gtk_entry_get_text(GTK_ENTRY(b1));
    if(strlen(data) != 0)
    {
        strcat(sql_client_order, data);
    }
    /*获取第2个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b2));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set dateOrder = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第3个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b3));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set collectionDate = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第4个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b4));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set collectionAddress = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第5个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b5));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set delivertDate = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第6个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b6));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set delivertAddress = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第7个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b7));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set loadWeight = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第8个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b8));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set loadDescription = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第9个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(b9));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update ClientOrder set clientNo = ");
        strcat(sql_client, data);
        strcat(sql_client, " ");
        strcat(sql_client, sql_client_order);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*以上都是更新ClientOrder部分*/
    /*获取第1个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(c1));
    if(strlen(data) != 0)
    {
        strcat(sql_client_office,data);
    }
    /*获取第2个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(c2));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Office set officeAddress = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_office);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第3个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(c3));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Office set officeTelNo = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_office);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第4个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(c4));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Office set officeFaxNo = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_office);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*以上都是修改Office的内容*/
    /*获取第1个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(d1));
    if(strlen(data) != 0)
    {
        strcat(sql_client_office,data);
    }
    /*获取第2个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(d2));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Trailer set trailerDescription = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_trailer);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }

    /*获取第3个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(d3));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Trailer set trailerLength = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_trailer);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第4个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(d4));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Trailer set maxCarryingWeight = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_trailer);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第5个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(d5));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Trailer set officeNo = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_trailer);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*以上是Trailer的内容修改*/
    /*获取第1个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(e1));
    if(strlen(data) != 0)
    {
        strcat(sql_client_unit,data);
    }
    /*获取第2个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(e2));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Unit set unitDescription = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_unit);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第3个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(e3));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Unit set maxPayLoad = '");
        strcat(sql_client, data);
        strcat(sql_client, "' ");
        strcat(sql_client, sql_client_unit);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
    /*获取第4个数据*/
    data = gtk_entry_get_text(GTK_ENTRY(e4));
    if(strlen(data) != 0)
    {
        memset(sql_client, 0, sizeof(sql_client));
        strcat(sql_client, "update Unit set officeNo = ");
        strcat(sql_client, data);
        strcat(sql_client, " ");
        strcat(sql_client, sql_client_unit);
        g_print("%s\n",sql_client);
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    }
}

/*更新按键回调函数*/
void deal_pressed_update(GtkButton *button, gpointer user_data)
{
    GtkWidget * fixed;
    GtkWidget * label;

    const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
    g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char

    gtk_widget_hide(window);//隐藏菜单函数    
    update_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口 
    window_init(update_window);//界面初始化

    fixed = gtk_fixed_new();//创建一个固定布局容器fixed

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(update_window), fixed);

    GtkWidget *back = gtk_button_new_with_label("返回");
    gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
    g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_update), NULL);

    /*Client*/
    a1 = gtk_entry_new();
    a2 = gtk_entry_new();
    a3 = gtk_entry_new();
    a4 = gtk_entry_new();
    a5 = gtk_entry_new();
    a6 = gtk_entry_new();
    a7 = gtk_entry_new();
    a8 = gtk_entry_new();
    a9 = gtk_entry_new();
    a10 = gtk_entry_new();
    a11 = gtk_entry_new();
    a12 = gtk_entry_new();
    a13 = gtk_entry_new();
    a14 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), a1, 200, 100);
    gtk_fixed_put(GTK_FIXED(fixed), a2, 200, 150);
    gtk_fixed_put(GTK_FIXED(fixed), a3, 200, 200);
    gtk_fixed_put(GTK_FIXED(fixed), a4, 200, 250);
    gtk_fixed_put(GTK_FIXED(fixed), a5, 200, 300);
    gtk_fixed_put(GTK_FIXED(fixed), a6, 200, 350);
    gtk_fixed_put(GTK_FIXED(fixed), a7, 200, 400);
    gtk_fixed_put(GTK_FIXED(fixed), a8, 200, 450);
    gtk_fixed_put(GTK_FIXED(fixed), a9, 200, 500);
    gtk_fixed_put(GTK_FIXED(fixed), a10, 200, 550);
    gtk_fixed_put(GTK_FIXED(fixed), a11, 200, 600);
    gtk_fixed_put(GTK_FIXED(fixed), a12, 200, 650);
    gtk_fixed_put(GTK_FIXED(fixed), a13, 200, 700);
    gtk_fixed_put(GTK_FIXED(fixed), a14, 200, 750);
    GtkWidget *label1 = gtk_label_new("clientNo:");
    GtkWidget *label2 = gtk_label_new("clientName:");
    GtkWidget *label3 = gtk_label_new("clientStreet:");
    GtkWidget *label4 = gtk_label_new("clientCity:");
    GtkWidget *label5 = gtk_label_new("clientState:");
    GtkWidget *label6 = gtk_label_new("clientZipCode:");
    GtkWidget *label7 = gtk_label_new("clientTelNo:");
    GtkWidget *label8 = gtk_label_new("clientFaxNo:");
    GtkWidget *label9 = gtk_label_new("clientWebAddress:");
    GtkWidget *label10 = gtk_label_new("contactName:");
    GtkWidget *label11 = gtk_label_new("contactTelNo:");
    GtkWidget *label12 = gtk_label_new("contactFaxNo:");
    GtkWidget *label13 = gtk_label_new("contactEmailAddress:");
    GtkWidget *label14 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label1, 50, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label2, 50, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label3, 50, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label4, 50, 258);
    gtk_fixed_put(GTK_FIXED(fixed), label5, 50, 308);
    gtk_fixed_put(GTK_FIXED(fixed), label6, 50, 358);
    gtk_fixed_put(GTK_FIXED(fixed), label7, 50, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label8, 50, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label9, 50, 508);
    gtk_fixed_put(GTK_FIXED(fixed), label10, 50, 558);
    gtk_fixed_put(GTK_FIXED(fixed), label11, 50, 608);
    gtk_fixed_put(GTK_FIXED(fixed), label12, 50, 658);
    gtk_fixed_put(GTK_FIXED(fixed), label13, 50, 708);
    gtk_fixed_put(GTK_FIXED(fixed), label14, 50, 758);

    /*ClientOrder*/ 
    b1 = gtk_entry_new();
    b2 = gtk_entry_new();
    b3 = gtk_entry_new();
    b4 = gtk_entry_new();
    b5 = gtk_entry_new();
    b6 = gtk_entry_new();
    b7 = gtk_entry_new();
    b8 = gtk_entry_new();
    b9 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), b1, 550, 100);
    gtk_fixed_put(GTK_FIXED(fixed), b2, 550, 150);
    gtk_fixed_put(GTK_FIXED(fixed), b3, 550, 200);
    gtk_fixed_put(GTK_FIXED(fixed), b4, 550, 250);
    gtk_fixed_put(GTK_FIXED(fixed), b5, 550, 300);
    gtk_fixed_put(GTK_FIXED(fixed), b6, 550, 350);
    gtk_fixed_put(GTK_FIXED(fixed), b7, 550, 400);
    gtk_fixed_put(GTK_FIXED(fixed), b8, 550, 450);
    gtk_fixed_put(GTK_FIXED(fixed), b9, 550, 500);
    GtkWidget *label19 = gtk_label_new("orderNo:");
    GtkWidget *label20 = gtk_label_new("dateOrder:");
    GtkWidget *label21 = gtk_label_new("collectionDate:");
    GtkWidget *label22 = gtk_label_new("collectionAddress:");
    GtkWidget *label23 = gtk_label_new("delivertDate:");
    GtkWidget *label24 = gtk_label_new("delivertAddress:");
    GtkWidget *label25 = gtk_label_new("loadWeight:");
    GtkWidget *label26 = gtk_label_new("loadDescription:");
    GtkWidget *label27 = gtk_label_new("clientNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label19, 410, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label20, 410, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label21, 410, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label22, 410, 258);
    gtk_fixed_put(GTK_FIXED(fixed), label23, 410, 308);
    gtk_fixed_put(GTK_FIXED(fixed), label24, 410, 358);
    gtk_fixed_put(GTK_FIXED(fixed), label25, 410, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label26, 410, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label27, 410, 508);

    /*Office*/
    c1 = gtk_entry_new();
    c2 = gtk_entry_new();
    c3 = gtk_entry_new();
    c4 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), c1, 880, 100);
    gtk_fixed_put(GTK_FIXED(fixed), c2, 880, 150);
    gtk_fixed_put(GTK_FIXED(fixed), c3, 880, 200);
    gtk_fixed_put(GTK_FIXED(fixed), c4, 880, 250);
    GtkWidget *label15 = gtk_label_new("officeNo:");
    GtkWidget *label16 = gtk_label_new("officeAddress:");
    GtkWidget *label17 = gtk_label_new("officeTelNo:");
    GtkWidget *label18 = gtk_label_new("officeFaxNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label15, 765, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label16, 765, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label17, 765, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label18, 765, 258);

    /*Trailer*/
    d1 = gtk_entry_new();
    d2 = gtk_entry_new();
    d3 = gtk_entry_new();
    d4 = gtk_entry_new();
    d5 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), d1, 1240, 100);
    gtk_fixed_put(GTK_FIXED(fixed), d2, 1240, 150);
    gtk_fixed_put(GTK_FIXED(fixed), d3, 1240, 200);
    gtk_fixed_put(GTK_FIXED(fixed), d4, 1240, 250);
    gtk_fixed_put(GTK_FIXED(fixed), d5, 1240, 300);
    GtkWidget *label28 = gtk_label_new("trailerVehLicenseNo:");
    GtkWidget *label29 = gtk_label_new("trailerDescription:");
    GtkWidget *label30 = gtk_label_new("trailerLength:");
    GtkWidget *label31 = gtk_label_new("maxCarryingWeight:");
    GtkWidget *label32 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label28, 1090, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label29, 1090, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label30, 1090, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label31, 1090, 258);
    gtk_fixed_put(GTK_FIXED(fixed), label32, 1090, 308);

    /*Unit*/    
    e1 = gtk_entry_new();
    e2 = gtk_entry_new();
    e3 = gtk_entry_new();
    e4 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), e1, 1240, 400);
    gtk_fixed_put(GTK_FIXED(fixed), e2, 1240, 450);
    gtk_fixed_put(GTK_FIXED(fixed), e3, 1240, 500);
    gtk_fixed_put(GTK_FIXED(fixed), e4, 1240, 550);
    GtkWidget *label33 = gtk_label_new("unitVehLicenseNo:");
    GtkWidget *label34 = gtk_label_new("unitDescription:");
    GtkWidget *label35 = gtk_label_new("maxPayLoad:");
    GtkWidget *label36 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label33, 1090, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label34, 1090, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label35, 1090, 508);
    gtk_fixed_put(GTK_FIXED(fixed), label36, 1090, 558);

    /*TransportReqts*/
    f1 = gtk_entry_new();
    f2 = gtk_entry_new();
    f3 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), f1, 880, 400);
    gtk_fixed_put(GTK_FIXED(fixed), f2, 880, 450);
    gtk_fixed_put(GTK_FIXED(fixed), f3, 880, 500);
    GtkWidget *label37 = gtk_label_new("unitDescription:");
    GtkWidget *label38 = gtk_label_new("maxPayLoad:");
    GtkWidget *label39 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label37, 765, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label38, 765, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label39, 765, 508);

    GtkWidget *update = gtk_label_new("Click Update data");
    gtk_fixed_put(GTK_FIXED(fixed), update, 400, 45);
    GtkWidget *back_update = gtk_button_new_with_label("UPDATE(Any data)");
    gtk_fixed_put(GTK_FIXED(fixed), back_update, 550, 40);
    g_signal_connect(back_update, "pressed", G_CALLBACK(update_date), NULL);

    gtk_widget_show_all(update_window);//显示所有控件
    gtk_main();
}

/*插入Trailer函数*/
void insert_Trailer(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    int sign= 1;

    const gchar *data = gtk_entry_get_text(GTK_ENTRY(p1));
    /* Create SQL statement */
    char sql_client[200] = "INSERT or ignore INTO Trailer VALUES (";
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",'");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(p2));//获取第二个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(p3));//获取第三个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(p4));//获取第四个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "',");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(p5));//获取第五个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ")");
    }
    g_print("%s\n", sql_client);

    if(sign == 0)
    {
        g_print("The information is incomplete, please re-enter it\n");
        failed_tips();//失败函数提示窗口
    }
    else{
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }else{
            fprintf(stdout, "Client insert successfully\n");
            success_tips();
        }
    }

}
/*插入Unit函数*/
void insert_Unit(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    int sign= 1;

    const gchar *data = gtk_entry_get_text(GTK_ENTRY(q1));
    /* Create SQL statement */
    char sql_client[200] = "INSERT or ignore INTO Unit VALUES (";
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",'");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(q2));//获取第二个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(q3));//获取第三个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "',");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(q4));//获取第四个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ")");
    }
    g_print("%s\n", sql_client);

    if(sign == 0)
    {
        g_print("The information is incomplete, please re-enter it\n");
        failed_tips();//失败函数提示窗口
    }
    else{
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }else{
            fprintf(stdout, "Client insert successfully\n");
            success_tips();
        }
    }
}
/*插入数据TransportReqt函数*/
void insert_TransportReqts(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    int sign= 1;

    const gchar *data = gtk_entry_get_text(GTK_ENTRY(r1));
    /* Create SQL statement */
    char sql_client[200] = "INSERT or ignore INTO TransportReqts VALUES (";
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(r2));//获取第二个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(r3));//获取第三个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ")");
    }
    g_print("%s\n", sql_client);

    if(sign == 0)
    {
        g_print("The information is incomplete, please re-enter it\n");
        failed_tips();//失败函数提示窗口
    }
    else{
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }else{
            fprintf(stdout, "Client insert successfully\n");
            success_tips();
        }
    }
}
/*插入数据Clientrder*/
void insert_ClientOrder(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    int sign= 1;

    const gchar *data = gtk_entry_get_text(GTK_ENTRY(m1));
    /* Create SQL statement */
    char sql_client[200] = "INSERT or ignore INTO ClientOrder VALUES (";
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",'");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m2));//获取第二个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m3));//获取第三个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m4));//获取第四个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m5));//获取第五个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m6));//获取第六个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m7));//获取第七个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m8));//获取第八个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "',");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(m9));//获取第九个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ")");
    }
    g_print("%s\n", sql_client);

    if(sign == 0)
    {
        g_print("The information is incomplete, please re-enter it\n");
        failed_tips();//失败函数提示窗口
    }
    else{
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }else{
            fprintf(stdout, "Client insert successfully\n");
            success_tips();
        }
    }
}
/*插入Office回调函数*/
void insert_Office(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    int sign= 1;

    const gchar *data = gtk_entry_get_text(GTK_ENTRY(o1));
    /* Create SQL statement */
    char sql_client[200] = "INSERT or ignore INTO Office VALUES (";
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",'");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(o2));//获取第二个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(o3));//获取第三个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(o4));//获取第四个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "');");
    }
    g_print("%s\n", sql_client);

    if(sign == 0)
    {
        g_print("The information is incomplete, please re-enter it\n");
        failed_tips();//失败函数提示窗口
    }
    else{
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }else{
            fprintf(stdout, "Client insert successfully\n");
            success_tips();
        }
    }
}
/*插入Client回调函数*/
void insert_Client(GtkButton *button, gpointer user_data)
{
    char *zErrMsg=0;
    int sign= 1;

    const gchar *data = gtk_entry_get_text(GTK_ENTRY(n1));
    /* Create SQL statement */
    char sql_client[200] = "INSERT or ignore INTO Client VALUES (";
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ",'");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n2));//获取第二个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n3));//获取第三个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n4));//获取第四个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n5));//获取第五个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n6));//获取第六个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n7));//获取第七个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n8));//获取第八个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n9));//获取第九个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n10));//获取第十个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n11));//获取第十一个数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n12));//获取第十二数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "','");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n13));//获取第十三数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, "',");
    }
    //g_print("%s\n", sql_client);

    data = gtk_entry_get_text(GTK_ENTRY(n14));//获取第十四数据
    if(strlen(data) == 0)
        sign = 0;
    else
    {
        strcat(sql_client, data);
        strcat(sql_client, ");");
    }
    g_print("%s\n", sql_client);

    if(sign == 0)
    {
        g_print("The information is incomplete, please re-enter it\n");
        failed_tips();//失败函数提示窗口
    }
    else{
        /* Execute SQL statement */
        int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }else{
            fprintf(stdout, "Client insert successfully\n");
            success_tips();
        }
    }
}
/*操作成功窗口提示*/
void success_tips()
{
    GtkWidget *tips;
    GtkWidget *fixed;
    tips = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(tips), 200, 150); //设置窗口大小
    gtk_window_set_resizable(GTK_WINDOW(tips), FALSE);//设置窗口固定
    fixed = gtk_fixed_new();//创建一个固定布局容器fixed

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(tips), fixed);
    GtkWidget *title = gtk_label_new("SUCCESSFUL OPERATION");//标题
    gtk_fixed_put(GTK_FIXED(fixed), title, 22, 50);

    gtk_window_set_title(GTK_WINDOW(tips),"tips");
    gtk_widget_show_all(tips);

    gtk_main();
}
/*失败窗口提示*/
void failed_tips()
{
    GtkWidget *tips;
    GtkWidget *fixed;
    tips = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(tips), 200, 150); //设置窗口大小
    gtk_window_set_resizable(GTK_WINDOW(tips), FALSE);//设置窗口固定
    fixed = gtk_fixed_new();//创建一个固定布局容器fixed

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(tips), fixed);
    GtkWidget *title = gtk_label_new("OPERATION FAILURE");//标题
    gtk_fixed_put(GTK_FIXED(fixed), title, 25, 50);

    gtk_window_set_title(GTK_WINDOW(tips),"tips");
    gtk_widget_show_all(tips);

    gtk_main();
}
/*跳转隐藏*/
void deal_pressed_back_update(GtkButton *button, gpointer user_data)
{
    gtk_widget_show_all(window);//显示菜单窗口
    gtk_widget_hide(update_window);//隐藏插入数据窗口
}
/*跳转隐藏*/
void deal_pressed_back_delete(GtkButton *button, gpointer user_data)
{   
    gtk_widget_show_all(window);//显示菜单窗口
    gtk_widget_hide(delete_window);//隐藏插入数据窗口
}   
/*跳转隐藏*/
void deal_pressed_back_insert(GtkButton *button, gpointer user_data)
{
    gtk_widget_show_all(window);//显示菜单窗口
    gtk_widget_hide(insert_window);//隐藏插入数据窗口
}
/*跳转隐藏*/
void deal_pressed_back_view(GtkButton *button, gpointer user_data)
{
    gtk_widget_show_all(window);//显示菜单窗口
    gtk_widget_hide(view_window);//隐藏查找数据窗口
}

//插入数据回调函数
void deal_pressed_insert(GtkButton *button, gpointer user_data)
{   
    GtkWidget * fixed;
    GtkWidget * label;

    const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
    g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char

    gtk_widget_hide(window);//隐藏菜单函数    
    insert_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口 
    window_init(insert_window);//界面初始化

    fixed = gtk_fixed_new();//创建一个固定布局容器fixed

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(insert_window), fixed);

    GtkWidget *back = gtk_button_new_with_label("返回");
    gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
    g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_insert), NULL);

    /*Client*/
    n1 = gtk_entry_new();
    n2 = gtk_entry_new();
    n3 = gtk_entry_new();
    n4 = gtk_entry_new();
    n5 = gtk_entry_new();
    n6 = gtk_entry_new();
    n7 = gtk_entry_new();
    n8 = gtk_entry_new();
    n9 = gtk_entry_new();
    n10 = gtk_entry_new();
    n11 = gtk_entry_new();
    n12 = gtk_entry_new();
    n13 = gtk_entry_new();
    n14 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), n1, 200, 100);
    gtk_fixed_put(GTK_FIXED(fixed), n2, 200, 150);
    gtk_fixed_put(GTK_FIXED(fixed), n3, 200, 200);
    gtk_fixed_put(GTK_FIXED(fixed), n4, 200, 250);
    gtk_fixed_put(GTK_FIXED(fixed), n5, 200, 300);
    gtk_fixed_put(GTK_FIXED(fixed), n6, 200, 350);
    gtk_fixed_put(GTK_FIXED(fixed), n7, 200, 400);
    gtk_fixed_put(GTK_FIXED(fixed), n8, 200, 450);
    gtk_fixed_put(GTK_FIXED(fixed), n9, 200, 500);
    gtk_fixed_put(GTK_FIXED(fixed), n10, 200, 550);
    gtk_fixed_put(GTK_FIXED(fixed), n11, 200, 600);
    gtk_fixed_put(GTK_FIXED(fixed), n12, 200, 650);
    gtk_fixed_put(GTK_FIXED(fixed), n13, 200, 700);
    gtk_fixed_put(GTK_FIXED(fixed), n14, 200, 750);
    GtkWidget *label1 = gtk_label_new("clientNo:");
    GtkWidget *label2 = gtk_label_new("clientName:");
    GtkWidget *label3 = gtk_label_new("clientStreet:");
    GtkWidget *label4 = gtk_label_new("clientCity:");
    GtkWidget *label5 = gtk_label_new("clientState:");
    GtkWidget *label6 = gtk_label_new("clientZipCode:");
    GtkWidget *label7 = gtk_label_new("clientTelNo:");
    GtkWidget *label8 = gtk_label_new("clientFaxNo:");
    GtkWidget *label9 = gtk_label_new("clientWebAddress:");
    GtkWidget *label10 = gtk_label_new("contactName:");
    GtkWidget *label11 = gtk_label_new("contactTelNo:");
    GtkWidget *label12 = gtk_label_new("contactFaxNo:");
    GtkWidget *label13 = gtk_label_new("contactEmailAddress:");
    GtkWidget *label14 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label1, 50, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label2, 50, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label3, 50, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label4, 50, 258);
    gtk_fixed_put(GTK_FIXED(fixed), label5, 50, 308);
    gtk_fixed_put(GTK_FIXED(fixed), label6, 50, 358);
    gtk_fixed_put(GTK_FIXED(fixed), label7, 50, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label8, 50, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label9, 50, 508);
    gtk_fixed_put(GTK_FIXED(fixed), label10, 50, 558);
    gtk_fixed_put(GTK_FIXED(fixed), label11, 50, 608);
    gtk_fixed_put(GTK_FIXED(fixed), label12, 50, 658);
    gtk_fixed_put(GTK_FIXED(fixed), label13, 50, 708);
    gtk_fixed_put(GTK_FIXED(fixed), label14, 50, 758);

    /*ClientOrder*/ 
    m1 = gtk_entry_new();
    m2 = gtk_entry_new();
    m3 = gtk_entry_new();
    m4 = gtk_entry_new();
    m5 = gtk_entry_new();
    m6 = gtk_entry_new();
    m7 = gtk_entry_new();
    m8 = gtk_entry_new();
    m9 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), m1, 550, 100);
    gtk_fixed_put(GTK_FIXED(fixed), m2, 550, 150);
    gtk_fixed_put(GTK_FIXED(fixed), m3, 550, 200);
    gtk_fixed_put(GTK_FIXED(fixed), m4, 550, 250);
    gtk_fixed_put(GTK_FIXED(fixed), m5, 550, 300);
    gtk_fixed_put(GTK_FIXED(fixed), m6, 550, 350);
    gtk_fixed_put(GTK_FIXED(fixed), m7, 550, 400);
    gtk_fixed_put(GTK_FIXED(fixed), m8, 550, 450);
    gtk_fixed_put(GTK_FIXED(fixed), m9, 550, 500);
    GtkWidget *label19 = gtk_label_new("orderNo:");
    GtkWidget *label20 = gtk_label_new("dateOrder:");
    GtkWidget *label21 = gtk_label_new("collectionDate:");
    GtkWidget *label22 = gtk_label_new("collectionAddress:");
    GtkWidget *label23 = gtk_label_new("delivertDate:");
    GtkWidget *label24 = gtk_label_new("delivertAddress:");
    GtkWidget *label25 = gtk_label_new("loadWeight:");
    GtkWidget *label26 = gtk_label_new("loadDescription:");
    GtkWidget *label27 = gtk_label_new("clientNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label19, 410, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label20, 410, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label21, 410, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label22, 410, 258);
    gtk_fixed_put(GTK_FIXED(fixed), label23, 410, 308);
    gtk_fixed_put(GTK_FIXED(fixed), label24, 410, 358);
    gtk_fixed_put(GTK_FIXED(fixed), label25, 410, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label26, 410, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label27, 410, 508);

    /*Office*/
    o1 = gtk_entry_new();
    o2 = gtk_entry_new();
    o3 = gtk_entry_new();
    o4 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), o1, 880, 100);
    gtk_fixed_put(GTK_FIXED(fixed), o2, 880, 150);
    gtk_fixed_put(GTK_FIXED(fixed), o3, 880, 200);
    gtk_fixed_put(GTK_FIXED(fixed), o4, 880, 250);
    GtkWidget *label15 = gtk_label_new("officeNo:");
    GtkWidget *label16 = gtk_label_new("officeAddress:");
    GtkWidget *label17 = gtk_label_new("officeTelNo:");
    GtkWidget *label18 = gtk_label_new("officeFaxNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label15, 765, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label16, 765, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label17, 765, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label18, 765, 258);

    /*Trailer*/
    p1 = gtk_entry_new();
    p2 = gtk_entry_new();
    p3 = gtk_entry_new();
    p4 = gtk_entry_new();
    p5 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), p1, 1240, 100);
    gtk_fixed_put(GTK_FIXED(fixed), p2, 1240, 150);
    gtk_fixed_put(GTK_FIXED(fixed), p3, 1240, 200);
    gtk_fixed_put(GTK_FIXED(fixed), p4, 1240, 250);
    gtk_fixed_put(GTK_FIXED(fixed), p5, 1240, 300);
    GtkWidget *label28 = gtk_label_new("trailerVehLicenseNo:");
    GtkWidget *label29 = gtk_label_new("trailerDescription:");
    GtkWidget *label30 = gtk_label_new("trailerLength:");
    GtkWidget *label31 = gtk_label_new("maxCarryingWeight:");
    GtkWidget *label32 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label28, 1090, 108);
    gtk_fixed_put(GTK_FIXED(fixed), label29, 1090, 158);
    gtk_fixed_put(GTK_FIXED(fixed), label30, 1090, 208);
    gtk_fixed_put(GTK_FIXED(fixed), label31, 1090, 258);
    gtk_fixed_put(GTK_FIXED(fixed), label32, 1090, 308);

    /*Unit*/    
    q1 = gtk_entry_new();
    q2 = gtk_entry_new();
    q3 = gtk_entry_new();
    q4 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), q1, 1240, 400);
    gtk_fixed_put(GTK_FIXED(fixed), q2, 1240, 450);
    gtk_fixed_put(GTK_FIXED(fixed), q3, 1240, 500);
    gtk_fixed_put(GTK_FIXED(fixed), q4, 1240, 550);
    GtkWidget *label33 = gtk_label_new("unitVehLicenseNo:");
    GtkWidget *label34 = gtk_label_new("unitDescription:");
    GtkWidget *label35 = gtk_label_new("maxPayLoad:");
    GtkWidget *label36 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label33, 1090, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label34, 1090, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label35, 1090, 508);
    gtk_fixed_put(GTK_FIXED(fixed), label36, 1090, 558);

    /*TransportReqts*/
    r1 = gtk_entry_new();
    r2 = gtk_entry_new();
    r3 = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), r1, 880, 400);
    gtk_fixed_put(GTK_FIXED(fixed), r2, 880, 450);
    gtk_fixed_put(GTK_FIXED(fixed), r3, 880, 500);
    GtkWidget *label37 = gtk_label_new("unitDescription:");
    GtkWidget *label38 = gtk_label_new("maxPayLoad:");
    GtkWidget *label39 = gtk_label_new("officeNo:");
    gtk_fixed_put(GTK_FIXED(fixed), label37, 765, 408);
    gtk_fixed_put(GTK_FIXED(fixed), label38, 765, 458);
    gtk_fixed_put(GTK_FIXED(fixed), label39, 765, 508);

    GtkWidget *back_Client = gtk_button_new_with_label("INSERT(Client)");
    gtk_fixed_put(GTK_FIXED(fixed), back_Client, 200, 50);
    g_signal_connect(back_Client, "pressed", G_CALLBACK(insert_Client), NULL);

    GtkWidget *back_Office = gtk_button_new_with_label("INSERT(Office)");
    gtk_fixed_put(GTK_FIXED(fixed), back_Office, 880, 50);
    g_signal_connect(back_Office, "pressed", G_CALLBACK(insert_Office), NULL);

    GtkWidget *back_ClientOrder = gtk_button_new_with_label("INSERT(ClientOrder)");
    gtk_fixed_put(GTK_FIXED(fixed), back_ClientOrder, 550, 50);
    g_signal_connect(back_ClientOrder, "pressed", G_CALLBACK(insert_ClientOrder), NULL);

    GtkWidget *back_Trailer = gtk_button_new_with_label("INSERT(Trailer)");
    gtk_fixed_put(GTK_FIXED(fixed), back_Trailer, 1240, 50);
    g_signal_connect(back_Trailer, "pressed", G_CALLBACK(insert_Trailer), NULL);

    GtkWidget *back_Unit = gtk_button_new_with_label("INSERT(Unit)");
    gtk_fixed_put(GTK_FIXED(fixed), back_Unit, 1240, 350);
    g_signal_connect(back_Unit, "pressed", G_CALLBACK(insert_Unit), NULL);

    GtkWidget *back_TransportReqts = gtk_button_new_with_label("INSERT(TransportReqts)");
    gtk_fixed_put(GTK_FIXED(fixed), back_TransportReqts, 880, 350);
    g_signal_connect(back_TransportReqts, "pressed", G_CALLBACK(insert_TransportReqts), NULL);

    gtk_widget_show_all(insert_window);//显示所有控件
    gtk_main();


}
//按钮按下的处理函数, gpointer 相当于 void *
void deal_pressed_view(GtkButton *button, gpointer user_data)
{
    GtkWidget * fixed;
    GtkWidget * label;

    const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
    g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char

    gtk_widget_hide(window);//隐藏菜单函数    
    view_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口 
    window_init(view_window);//界面初始化

    fixed = gtk_fixed_new();//创建一个固定布局容器fixed

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(view_window), fixed);

    label = gtk_button_new_with_label("查找");
    name = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), label, 350, 50);
    gtk_fixed_put(GTK_FIXED(fixed), name, 150, 50);

    GtkWidget *back = gtk_button_new_with_label("返回");
    gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
    g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_view), NULL); 

    GtkWidget *shuzu[50];
    /*table Client*/
    GtkWidget *label99 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
    GtkWidget *label1 = gtk_label_new("clientNo");
    GtkWidget *label2 = gtk_label_new("clientName");
    GtkWidget *label3 = gtk_label_new("clientStreet:");
    GtkWidget *label4 = gtk_label_new("clientCity:");
    GtkWidget *label5 = gtk_label_new("clientState:");
    GtkWidget *label6 = gtk_label_new("clientZipCode:");
    GtkWidget *label7 = gtk_label_new("clientTelNo:");
    GtkWidget *label8 = gtk_label_new("clientFaxNo:");
    GtkWidget *label9 = gtk_label_new("clientWebAddress:");
    GtkWidget *label10 = gtk_label_new("contactName:");
    GtkWidget *label11 = gtk_label_new("contactTelNo:");
    GtkWidget *label12 = gtk_label_new("contactFaxNo:");
    GtkWidget *label13 = gtk_label_new("contactEmailAddress:");
    GtkWidget *label100 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
    /*table Office*/
    GtkWidget *label14 = gtk_label_new("officeNo:");
    GtkWidget *label15 = gtk_label_new("officeNo:");
    GtkWidget *label16 = gtk_label_new("officeAddress:");
    GtkWidget *label17 = gtk_label_new("officeTelNo:");
    GtkWidget *label18 = gtk_label_new("officeFaxNo:");
    GtkWidget *label101 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
    /*table ClientOrder*/
    GtkWidget *label19 = gtk_label_new("officeAddress:");
    GtkWidget *label20 = gtk_label_new("officeAddress:");
    GtkWidget *label21 = gtk_label_new("officeAddress:");
    GtkWidget *label22 = gtk_label_new("officeAddress:");
    GtkWidget *label23 = gtk_label_new("officeAddress:");
    GtkWidget *label24 = gtk_label_new("officeAddress:");
    GtkWidget *label25 = gtk_label_new("officeAddress:");
    GtkWidget *label26 = gtk_label_new("officeAddress:");
    GtkWidget *label27 = gtk_label_new("officeAddress:");
    GtkWidget *label102 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
    /*table Trailer*/
    GtkWidget *label28 = gtk_label_new("officeAddress:");
    GtkWidget *label29 = gtk_label_new("officeAddress:");
    GtkWidget *label30 = gtk_label_new("officeAddress:");
    GtkWidget *label31 = gtk_label_new("officeAddress:");
    GtkWidget *label32 = gtk_label_new("officeAddress:");
    GtkWidget *label103 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
    /*table Unit*/
    GtkWidget *label33 = gtk_label_new("officeAddress:");
    GtkWidget *label34 = gtk_label_new("officeAddress:");
    GtkWidget *label35 = gtk_label_new("officeAddress:");
    GtkWidget *label36 = gtk_label_new("officeAddress:");
    GtkWidget *label104 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");

    /*Cleint weizhi*/
    gtk_fixed_put(GTK_FIXED(fixed), label99,100, 110);
    gtk_fixed_put(GTK_FIXED(fixed), label1, 100, 150);
    gtk_fixed_put(GTK_FIXED(fixed), label2, 300, 150);
    gtk_fixed_put(GTK_FIXED(fixed), label3, 500, 150);
    gtk_fixed_put(GTK_FIXED(fixed), label4, 700, 150);
    gtk_fixed_put(GTK_FIXED(fixed), label5, 900, 150);
    gtk_fixed_put(GTK_FIXED(fixed), label6, 1100, 150);
    gtk_fixed_put(GTK_FIXED(fixed), label7, 100, 200);
    gtk_fixed_put(GTK_FIXED(fixed), label8, 300, 200);
    gtk_fixed_put(GTK_FIXED(fixed), label9, 500, 200);
    gtk_fixed_put(GTK_FIXED(fixed), label10, 800, 200);
    gtk_fixed_put(GTK_FIXED(fixed), label11, 1100, 200);
    gtk_fixed_put(GTK_FIXED(fixed), label12, 100, 250);
    gtk_fixed_put(GTK_FIXED(fixed), label13, 300, 250);
    gtk_fixed_put(GTK_FIXED(fixed), label100, 100, 300);
    /*Office weizhi*/
    //gtk_fixed_put(GTK_FIXED(fixed), label14, 100, 350);
    gtk_fixed_put(GTK_FIXED(fixed), label15, 100, 350);
    gtk_fixed_put(GTK_FIXED(fixed), label16, 300, 345);
    gtk_fixed_put(GTK_FIXED(fixed), label17, 700, 350);
    gtk_fixed_put(GTK_FIXED(fixed), label18,1000, 350);
    gtk_fixed_put(GTK_FIXED(fixed), label101, 100, 400);
    /*ClientOrder weizhi*/
    gtk_fixed_put(GTK_FIXED(fixed), label19, 100, 450);
    gtk_fixed_put(GTK_FIXED(fixed), label20, 300, 450);
    gtk_fixed_put(GTK_FIXED(fixed), label21, 500, 450);
    gtk_fixed_put(GTK_FIXED(fixed), label22, 800, 445);
    gtk_fixed_put(GTK_FIXED(fixed), label23, 100, 500);
    gtk_fixed_put(GTK_FIXED(fixed), label24, 300, 495);
    gtk_fixed_put(GTK_FIXED(fixed), label25, 700, 500);
    gtk_fixed_put(GTK_FIXED(fixed), label26, 900, 495);
    gtk_fixed_put(GTK_FIXED(fixed), label102, 100, 550);
    //gtk_fixed_put(GTK_FIXED(fixed), label27, 700, 500);
    /*Trailer*/
    gtk_fixed_put(GTK_FIXED(fixed), label28, 100, 600);
    gtk_fixed_put(GTK_FIXED(fixed), label29, 400, 595);
    gtk_fixed_put(GTK_FIXED(fixed), label30, 700, 595);
    gtk_fixed_put(GTK_FIXED(fixed), label31, 1000, 597);
    gtk_fixed_put(GTK_FIXED(fixed), label103, 100, 650);
    //gtk_fixed_put(GTK_FIXED(fixed), label32, 1000, 597);
    /*Unit*/
    gtk_fixed_put(GTK_FIXED(fixed), label33, 100, 700);
    gtk_fixed_put(GTK_FIXED(fixed), label34, 300, 695); 
    gtk_fixed_put(GTK_FIXED(fixed), label35, 700, 700);
    //gtk_fixed_put(GTK_FIXED(fixed), label35, 1000, 700);
    gtk_fixed_put(GTK_FIXED(fixed), label104, 100, 750);
    /*Client*/
    shuzu[0] = label1;
    shuzu[1] = label2;
    shuzu[2] = label3;
    shuzu[3] = label4;
    shuzu[4] = label5;
    shuzu[5] = label6;
    shuzu[6] = label7;
    shuzu[7] = label8;
    shuzu[8] = label9;
    shuzu[9] = label10;
    shuzu[10] = label11;
    shuzu[11] = label12; 
    shuzu[12] = label13;
    /*Office*/
    shuzu[13] = label14;
    shuzu[14] = label15;
    shuzu[15] = label16;
    shuzu[16] = label17;
    shuzu[17] = label18;

    /*ClientOrder*/
    shuzu[18] = label19;
    shuzu[19] = label20;
    shuzu[20] = label21;
    shuzu[21] = label22;
    shuzu[22] = label23;
    shuzu[23] = label24;
    shuzu[24] = label25;
    shuzu[25] = label26;

    /*Trailer*/ 
    shuzu[26] = label27;
    shuzu[27] = label28;
    shuzu[28] = label29;
    shuzu[29] = label30;
    shuzu[30] = label31;
    /*Unit*/
    shuzu[31] = label32;
    shuzu[32] = label33;
    shuzu[33] = label34;
    shuzu[34] = label35;
    g_signal_connect(label, "pressed", G_CALLBACK(window_view), &shuzu);

    gtk_widget_show_all(view_window);//显示所有控件
    gtk_main();
}

//查找按键回调函数
void window_view(GtkWidget *button,GtkWidget * shuzu[20])
{
    char buf[50];
    char *zErrMsg = 0;
    int result,i,j;
    char *ErrMsg = 0;
    char **dbResult=NULL;
    int nRow=0,nCloumn;
    char *sql;
    char *a[1]={"NULL"};

    const gchar * ClientNo = gtk_entry_get_text(GTK_ENTRY(name));        
    g_print("查找的编号为:%s\n", ClientNo);
    // sql = sqlite3_mprintf("select * from Client where clientNo ='%s'", ClientNo);
    sql = sqlite3_mprintf("select * from  Client,Office,ClientOrder,Trailer,Unit where Client.officeNo=Office.officeNo and ClientOrder.clientNo=Client.clientNo and Office.officeNo=Trailer.officeNo and Unit.officeNo=Office.officeNo and Client.clientNo ='%s'", ClientNo);
    printf("%s\n",sql);
    result = sqlite3_get_table(db, sql, &dbResult, &nRow, &nCloumn, &ErrMsg);
    if(nRow != 0)
    {
        g_print("nRow: %d ||", nRow);
        g_print("nColumn: %d\n",nCloumn);
        for (i = 0; i < nRow; i++)
        {
            for (j = 0; j < nCloumn; j++)
            {
                if (j == 0)
                    table[j] = sqlite3_mprintf("clientN0: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 1)
                    table[j] = sqlite3_mprintf("clientName: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 2)
                    table[j] = sqlite3_mprintf("clientStreet: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 3)
                    table[j] = sqlite3_mprintf("clientCity: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 4)
                    table[j] = sqlite3_mprintf("clientState: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 5)
                    table[j] = sqlite3_mprintf("clientZipCode: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 6)
                    table[j] = sqlite3_mprintf("clientTelNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 7)
                    table[j] = sqlite3_mprintf("clientFaxNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 8)
                    table[j] = sqlite3_mprintf("clientWebAddress: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 9)
                    table[j] = sqlite3_mprintf("contactName: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 10)
                    table[j] = sqlite3_mprintf("contactTelNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 11)
                    table[j] = sqlite3_mprintf("contactFaxNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 12)
                    table[j] = sqlite3_mprintf("contactEmailAddress: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 13)
                    table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);

                if (j == 14)
                    table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 15)
                    table[j] = sqlite3_mprintf("officeAddress: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 16)
                    table[j] = sqlite3_mprintf("officeTelNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 17)
                    table[j] = sqlite3_mprintf("officeFaxNo: %s",dbResult[(i + 1) * nCloumn + j]);

                if (j == 18)
                    table[j] = sqlite3_mprintf("orderNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 19)
                    table[j] = sqlite3_mprintf("dateOrder: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 20)
                    table[j] = sqlite3_mprintf("collectionDate: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 21)
                    table[j] = sqlite3_mprintf("collectionAddress: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 22)
                    table[j] = sqlite3_mprintf("delivertDate: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 23)
                    table[j] = sqlite3_mprintf("delivertAddress: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 24)
                    table[j] = sqlite3_mprintf("loadWeight: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 25)
                    table[j] = sqlite3_mprintf("loadDescription: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 26)
                    table[j] = sqlite3_mprintf("clientNo: %s",dbResult[(i + 1) * nCloumn + j]);

                if (j == 27)
                    table[j] = sqlite3_mprintf("trailerVehLicenseNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 28)
                    table[j] = sqlite3_mprintf("trailerDescription: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 29)
                    table[j] = sqlite3_mprintf("trailerLength: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 30)
                    table[j] = sqlite3_mprintf("maxCarryingWeight: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 31)
                    table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);

                if (j == 32)
                    table[j] = sqlite3_mprintf("unitVehLicenseNo: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 33)
                    table[j] = sqlite3_mprintf("unitDescription: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 34)
                    table[j] = sqlite3_mprintf("maxPayLoad: %s",dbResult[(i + 1) * nCloumn + j]);
                if (j == 35)
                    table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);
            }
        }
        for (int k = 1; k < 36; k++)
        {
            gtk_label_set_text(GTK_LABEL(shuzu[k-1]), table[k - 1]);
        }
    }
    else
    {
        failed_tips();
    }
    g_print("%s\n ",table[0]);

    for (int i = 0; i < 36; i++)
    {
        g_print("%s ", table[i]);
    }
    gtk_widget_show_all(shuzu[36]);

    sqlite3_free_table(dbResult);
}
//主菜单函数
void window_main() 
{
    // GtkWidget *window;//初始化窗口
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口 

    gtk_window_set_default_size(GTK_WINDOW(window), LOGIN_WIDTH,LOGIN_HEIGHT); //设置窗口大小
    gtk_window_set_resizable(GTK_WINDOW(window), FALSE);//设置窗口固定
    gtk_window_set_title(GTK_WINDOW(window), "Delivery-by-Customer"); //设置标题
    g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);// 为窗口的 "destroy" 事件设置一个信号处理函数

    GtkWidget *fixed = gtk_fixed_new(); //创建一个固定容器
    gtk_container_add(GTK_CONTAINER (window), fixed);//固定放进窗口

    GtkWidget *title = gtk_label_new("Customer_Shipping_Main_Menu_Ttable");//标题
    gtk_fixed_put(GTK_FIXED(fixed), title, 110, 35);

    GtkWidget *button1 = gtk_button_new_with_label ("查看总表");//创建按钮
    gtk_fixed_put(GTK_FIXED(fixed), button1, 300, 100);//将按钮组装到一个固定容器的窗口中
    g_signal_connect(button1, "pressed", G_CALLBACK(deal_pressed_view), NULL);//按钮触发事件

    GtkWidget *button2 = gtk_button_new_with_label ("插入数据");//创建按钮
    gtk_fixed_put(GTK_FIXED(fixed), button2, 100, 100);//将按钮组装到一个固定容器的窗口中
    g_signal_connect(button2, "pressed", G_CALLBACK(deal_pressed_insert), NULL);//按钮触发事件

    GtkWidget *button3 = gtk_button_new_with_label ("更新数据");//创建按钮
    gtk_fixed_put(GTK_FIXED(fixed), button3, 100, 200);//将按钮组装到一个固定容器的窗口中
    g_signal_connect(button3, "pressed", G_CALLBACK(deal_pressed_update), NULL);//按钮触发事件

    GtkWidget *button4 = gtk_button_new_with_label ("删除数据");//创建按钮
    gtk_fixed_put(GTK_FIXED(fixed), button4, 300, 200);//将按钮组装到一个固定容器的窗口中
    g_signal_connect(button4, "pressed", G_CALLBACK(deal_pressed_delete), NULL);//按钮触发事件


    gtk_widget_show_all(window);//显示所有控件

    gtk_main();//进入事件循环 
}

void window_init(GtkWidget *window)
{
    //GtkWidget *window;//初始化窗口 
    //gtk_init(&argc, &argv); // 初始化
    gtk_window_set_default_size(GTK_WINDOW(window), WIDTH, HEIGHT); //设置窗口大小
    gtk_window_set_resizable(GTK_WINDOW(window), FALSE);//设置窗口固定
    gtk_window_set_title(GTK_WINDOW(window), "Delivery-by-Customer"); //设置标题
    g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);// 为窗口的 "destroy" 事件设置一个信号处理函数
}
//登陆界面
void login()
{
    //登录界面窗口
    //iGtkWidget * login_window;

    //取消按钮
    GtkWidget * login_button;
    GtkWidget * quxiao_button;
    GtkWidget * label;
    GtkWidget * image;
    GtkWidget * fixed;

    //gtk_init(&argc, &argv);
    login_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(G_OBJECT(login_window),"destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_window_set_title(GTK_WINDOW(login_window),"登录");
    gtk_window_set_default_size(GTK_WINDOW(login_window), LOGIN_WIDTH, LOGIN_HEIGHT);
    gtk_window_set_resizable(GTK_WINDOW(login_window), FALSE);//设置窗口固定
    gtk_window_set_position(GTK_WINDOW(login_window), GTK_WIN_POS_CENTER);

    //创建一个固定布局容器fixed
    fixed = gtk_fixed_new();

    //将fixed添加到login_window中
    gtk_container_add(GTK_CONTAINER(login_window), fixed);

    label = gtk_label_new("用户名:");
    name = gtk_entry_new();
    gtk_fixed_put(GTK_FIXED(fixed), label, 145, 35);
    gtk_fixed_put(GTK_FIXED(fixed), name, 200, 30);

    label = gtk_label_new("密 码:");
    passwd = gtk_entry_new();
    //设置行编辑的内容是否可见(不能可视相当于密码模式,看不到文本的内容)
    gtk_entry_set_visibility(GTK_ENTRY(passwd), FALSE);
    gtk_fixed_put(GTK_FIXED(fixed), label, 150, 105);
    gtk_fixed_put(GTK_FIXED(fixed), passwd, 200, 100);

    login_button = gtk_button_new_with_label("登 录");
    g_signal_connect(login_button, "clicked", G_CALLBACK(login_button_click), NULL);
    gtk_fixed_put(GTK_FIXED(fixed), login_button, 150, 180);

    quxiao_button = gtk_button_new_with_label("取 消");
    g_signal_connect(quxiao_button, "clicked", G_CALLBACK(quxiao_button_click), NULL);
    gtk_fixed_put(GTK_FIXED(fixed), quxiao_button, 300, 180);

    gtk_widget_show_all(login_window);
    gtk_main();
}
//登陆按钮执行操作
void login_button_click(GtkWidget*button, gpointer userdata)
{
    const gchar * userName = gtk_entry_get_text(GTK_ENTRY(name));
    const gchar * userPassed = gtk_entry_get_text(GTK_ENTRY(passwd));

    g_print("用户名是:%s\n", userName);
    g_print("用户密码是:%s\n", userPassed);

    if(strcmp(userName,name1)==0 && strcmp(passwd1, userPassed)==0)
    {
        g_print("登录成功!");
        gtk_widget_hide(login_window);
        window_main();
    }
    else
    {
        g_print("登录失败,用户名或密码失败!");
    }
}
//取消按钮执行操作
void quxiao_button_click(GtkWidget*button, gpointer userdata)
{
    gtk_main_quit();
}
//数据库回调函数
static int callback(void *data, int argc, char **argv, char **azColName)
{
    int i;
    fprintf(stderr, "%s: ", (const char*)data);
    for(i=0; i<argc; i++)
    {
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}
//数据库以及表格创建函数
int create_database_tables()
{
    //sqlite3 *db;
    char *zErrMsg = 0;
    int  rc,rc1,rc2,rc3,rc4,rc5,rc6;

    /* Open database */
    rc = sqlite3_open("system.db", &db);
    if( rc )
    {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return -1;
    }
    else
    {
        fprintf(stderr, "Opened database successfully\n");
    }

    /* Create table Client */
    client = "CREATE TABLE Client("  \
              "clientNO             integer      primary key," \
              "clientName           vchar(20)    NOT NULL," \
              "clientStreet         vchar(20)    NOT NULL," \
              "clientCity           vchar(10)	 NOT NULL," \
              "clientState	        vchar(10)    NOT NULL," \
              "clientZipCode        char(6)      NOT NULL," \
              "clientTelNO          vchar(11)    NOT NULL," \
              "clientFaxNO          vchar(11)            ," \
              "clientWebAddress     vchar(45)    NOT NULL," \
              "contactName          vchar(20)    NOT NULL," \
              "contactTelNo         vchar(11)            ," \
              "contactFaxNO         vchar(11)            ," \
              "contactEmailAddress  vcharr(30)   NOT NULL," \
              "officeNo             integer      NOT NULL," \
              "foreign key(officeNo) references Office(officeNo));";

    /* Create table Office */
    office = "CREATE table Office("  \
              "officeNo          integer      primary key," \
              "officeAddress     vchar(45)    NOT NULL," \
              "officeTelNo       vchar(11)    NOT NULL," \
              "officeFaxNo       vchar(11)    NOT NULL);";

    /* Create table ClientOrder */
    clientorder = "create table ClientOrder("  \
                   "orderNO           integer       primary key," \
                   "dateOrder         vchar(30)     NOT NULL," \
                   "collectionDate    vchar(30)     NOT NULL," \
                   "collectionAddress vchar(45)     NOT NULL," \
                   "delivertDate       datatime      NOT NULL," \
                   "delivertAddress    vchar(45)     NOT NULL," \
                   "loadWeight        decimal(10,2) NOT NULL," \
                   "loadDescription   text          NOT NULL," \
                   "clientNo          integer       NOT NULL," \
                   "foreign key(clientNo) references Client(clientNo));";

    /* Create table Trailer */
    trailer = "create table Trailer("  \
               "trailerVehLicenseNo  integer        primary key," \
               "trailerDescription   text           NOT NULL," \
               "trailerLength        declmal(10,2)  NOT NULL," \
               "maxCarryingWeight    declmal(10,2)  NOT NULL," \
               "officeNo             integer        NOT NULL," \
               "foreign key(officeNo) references Office(officeNo));";

    /* Create table Uint */
    unit = "create table Unit(" \
            "unitVehLicenseNo  integer       primary key," \
            "unitDescription   text          NOT NULL," \
            "maxPayLoad        decimal(10,2) NOT NULL," \
            "officeNo          integer       NOT NULL," \
            "foreign key(officeNo) references Office(officeNo));";

    /* Create table Uint */
    transportreqts = "create table TransportReqts(" \
                      "TransportReqPartNo integer       primary key," \
                      "unitVehLicenseNo   integer       NOT NULL," \
                      "orderNo            integer       NOT NULL," \
                      "foreign key(orderNo) references ClientOrder(orderNo));";
    "foreign key(unitVehLicenseNo) references Unit(unitVehLicenseNo));";

    /* Execute SQL statement */
    rc1 = sqlite3_exec(db, client,         callback, 0, &zErrMsg);
    rc2 = sqlite3_exec(db, office,         callback, 0, &zErrMsg);
    rc3 = sqlite3_exec(db, clientorder,    callback, 0, &zErrMsg);
    rc4 = sqlite3_exec(db, trailer,        callback, 0, &zErrMsg);
    rc5 = sqlite3_exec(db, unit,           callback, 0, &zErrMsg);
    rc6 = sqlite3_exec(db, transportreqts, callback, 0, &zErrMsg);

    if(rc1 == SQLITE_OK && rc2 == SQLITE_OK && rc3 == SQLITE_OK && rc4 == SQLITE_OK && rc5 == SQLITE_OK && rc6 == SQLITE_OK)
        //if(rc1 == SQLITE_OK)
        //if(rc2 == SQLITE_OK)
        //if(rc3 == SQLITE_OK)
        //if(rc4 == SQLITE_OK)
        // if(rc5 == SQLITE_OK)
        //if(rc6 == SQLITE_OK)
    {
        fprintf(stdout, "Table  created successfully\n");
    }
    else
    {
        fprintf(stderr, "table error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }

    /* Create SQL statement */
    char *sql_client = "INSERT or ignore INTO Client VALUES (111, '王登涛', '清源街道', '武汉市', '亚洲','中国','15971739828','12345','192.68.1.10','客户运送公司','19202736721','888888','1799055460@qq.com', 222);";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
    if( rc != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }else{
        fprintf(stdout, "Client insert successfully\n");
    }

    /* Create SQL statement */
    char *sql_office = "INSERT or ignore INTO Office VALUES (222, '中南民族大学1栋宿舍', '18181818188','12345');";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql_office, callback, 0, &zErrMsg);
    if( rc != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }else{
        fprintf(stdout, "Office insert successfully\n");
    }

    /* Create SQL statement */
    char *sql_clientorder = "INSERT or ignore INTO ClientOrder VALUES (0123456789, '2023-2-13', '2023-2-14', '湖北省恩施州咸丰县清源将街道','2023-2-15','湖北省恩施州咸丰县清源将街道','11111111.11','货物易碎', 111);";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql_clientorder, callback, 0, &zErrMsg);
    if( rc != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }else{ 
        fprintf(stdout, "ClientOrder insert  successfully\n");
    }

    /* Create SQL statement */
    char *sql_trailer = "INSERT or ignore INTO Trailer VALUES (12345678, '白蓝相间', '8米','50.05',222);";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql_trailer, callback, 0, &zErrMsg);
    if( rc != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }else{
        fprintf(stdout, "Trailer insert  successfully\n");
    }

    /* Create SQL statement */
    char *sql_unit = "INSERT or ignore INTO Unit VALUES (8, '行不更名坐不改姓-单位', '50.05', 222);";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql_unit, callback, 0, &zErrMsg);
    if( rc != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }else{
        fprintf(stdout, "Unit insert  successfully\n");
    }

    /* Create SQL statement */
    char *sql_transportreqts = "INSERT or ignore INTO TransportReqts VALUES (123456, 0123456789, 8);";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql_transportreqts, callback, 0, &zErrMsg);
    if( rc != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }else{
        fprintf(stdout, "Unit insert  successfully\n");
    }
}

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值