创建一个表后,可使用SQL语句INSERT命令向表中填入数据,但这种方法当数据量大时会耗时很多。因此作者采用批处理模式向表中填入数据的方法,具体作法是:首先创建一个存储SQL语句的文本文件amend_data.sql,如图1所示;然后执行SQL语句:
% mysql –ulyw –p lyw00001 work < amend_data.sql
就将图1中的数据加入到tbl_amend_amend表中了,如表1所示。如果需要对数据进行修改,则只需要在amend_data.sql文本文件中进行,然后重新执行一次上文中提到的语句就可以轻松地完成。
图1 amend_data文本文件
表1 tbl_amend_amend表
2.2 连接模块
完成数据库及表的创建,有了相关的数据,下一步的工作就是在应用程序中实现与数据库的连接。应用程序中用connect_to_db()模块实现了与数据库work连接功能,模块代码如下:
void Connect_to_db(){……;
conx = mysql_init((MYSQL *)0L); //初始化
……;
temp = mysql_real_connect(conx,126.0.0.1, lyw,lywcita001, work, 0, 0L, 0);
……;}
mysql_real_connect函数用于连接到名称为conx 的MySQL服务器,其主机的IP地址为“127.0.0.1”,用户名为“lyw”,密码为“lywcita001”,连接的数据库名为work。
2.3 填充模块
实现了与数据库的连接后,接下来应将数据库的数据填充到用户界面上去。应用程序中用Fill_clist()模块实现数据填充功能,其实现流程为:用MySQL查询所需的数据;将查询结果保存在内部缓存中;将缓存中的数据显示在用户界面上。模块代码如下:
void Fill_clist(){ ……;
gchar *amend_clist_row[5] = {,,,,}; //定义gtk+数组数据指针及变量
mysql_query(conx,select number,shapeh,deleteh,shaped,deleted from tbl_amend_amend);
result_set = mysql_store_result(conx); //将查询结果保存在内部缓存中
num_fields = mysql_num_fields(result_set); //获得结果集中列的数量
while(db_row = mysql_fetch_row(result_set)) {
lengths = mysql_fetch_lengths(result_set); //获得列的长度
amend_clist_row[0] = db_row[0];
……;
amend_clist_row[4] = db_row[4]; //将获得的db_row字符串数组的值一一对应地赋值给amend_clist_row
gtk_clist_append(GTK_CLIST(modify_list),amend_clist_row); }//填充到clist对应的域中
mysql_free_result(result_set);} //释放结果集所用的内存
编译运行插入程序,实现了数据库向用户界面填充数据功能,获得了如图2所示的界面。