#if !defined(__E_STATIC_LIB)
#include "include_mysql_header.h"

//TODO 静态库需要的部分,会记录所有的函数名到数组里,静态编译的时候需要取回命令名
static ARG_INFO g_argumentInfo_mysql_global_var[] = 
{
    // 1=参数名称, 2=参数详细解释, 3=指定图像索引,从1开始,0表示无, 4=图像数目(用作动画)
    // 5=参数类型, 6=参数默认值,   7=参数标志 AS_ 开头常量
    // AS_HAS_DEFAULT_VALUE         有默认值,倒数第二个参数是默认值
    // AS_DEFAULT_VALUE_IS_EMPTY    默认值为空,有可空标志
    // AS_RECEIVE_VAR               只能传递变量,相当于传引用,传递过来的肯定不是数组
    // AS_RECEIVE_VAR_ARRAY         传递过来的肯定是数组变量引用
    // AS_RECEIVE_VAR_OR_ARRAY      传递变量或者数组变量引用
    // AS_RECEIVE_ARRAY_DATA        传递数组
    // AS_RECEIVE_ALL_TYPE_DATA     传递数组/非数组
    // AS_RECEIVE_VAR_OR_OTHER      可以传递 变量/数据/返回值数据

    /*000*/ {"MySql的安装目录", "本参数的作用是设置MYSQL的安装目录的。请输入您安装mysql的目录，如: c:\\mysql", 0, 0, SDT_TEXT, 0, NULL},

    /*001*/ {"MySql服务器地址", "本参数的作用是设置MYSQL服务器的地址。请输入您想要连接的MySql服务器的地址，如果为空或字符串\"localhost\"，则是到本地主机的一个连接", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*002*/ {"用户名", "本参数的作用是设置您的用户名，如果为空，为当前用户", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*003*/ {"密码", "本参数的作用是设置您的密码，如果为空，且USER表中设置了“空字段可用”属性则可以匿名登陆", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*004*/ {"数据库名", "本参数的作用是设置您想要访问的数据库，如果为空则为默认数据库", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*005*/ {"端口", "本参数的作用是设置您想要连接的MySql服务器的端口，如果为空则为默认端口", 0, 0, SDT_INT, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*006*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值。对于参数值为0的情况不执行任何操作（注意，本库3.0以前的版本在参数为0时执行断开最后一次连接，易语言5.0针对静态编译对此库进行改造后已不支持该功能）。", 0, 0, SDT_INT, 0, NULL},

    /*007*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*008*/ {"Sql语句", "本参数是设置查询数据库的SQL语句，如Select,Update,Insert,Delete等等语句。详细信息请参考相关SQL语言书籍", 0, 0, SDT_TEXT, 0, NULL},

    /*009*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},

    /*010*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*011*/ {"字段", "本参数指定您想要读取的字段，可以是字段名称或是字段序号", 0, 0, _SDT_ALL, 0, NULL},
    /*012*/ {"结果变量", "本参数是存放返回结果的变量，如果字段类型为#MYSQL日期型或#MYSQL时间型或#MYSQL年份型时系统会转换为易语言中的日期时间型，如：字段为#MYSQL时间型，值为“23:33:34”，通过本命令得到的日期时间型变量的值为“2000-1-1 23:33:34”，如果字段为空时返回0或空字符串或空字节集。可以通过“字段是否为空”命令确定", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},

    /*013*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*014*/ {"记录位置", "本参数是准备移动到的新记录号，记录号值从 0 开始", 0, 0, SDT_INT64, 0, NULL},

    /*015*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*016*/ {"序号", "本参数是字段的序号", 0, 0, SDT_INT, 0, NULL},
    /*017*/ {"结果变量", "本参数是存放返回的字段名的变量", 0, 0, SDT_TEXT, 0, AS_RECEIVE_VAR},

    /*018*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*019*/ {"字段名", "本参数是字段的名称", 0, 0, SDT_TEXT, 0, NULL},
    /*020*/ {"结果变量", "本参数是存放返回的序号的变量", 0, 0, SDT_INT, 0, AS_RECEIVE_VAR},

    /*021*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*022*/ {"表名", "本参数是您要查询的表的名称，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*023*/ {"字段名", "本参数是您要查询的表中字段的名称，可以使用逗号连接多个字段，如果为*号则表示查询所有字段。例子1 单个字段 name  例子2 多个字段 name,email,id  例子3 所有字段 *", 0, 0, SDT_TEXT, 0, NULL},
    /*024*/ {"查找条件", "本参数是您要查询的条件。例子1 如果您要查找name的值为jack的记录 name='jack' 例子2 如果您要查找name的值为jack并且id的值为2的记录 name='jack' and id=2 例子3 如果您要查找name的值为jack或者id的值为2的记录 name='jack' or id=2", 0, 0, SDT_TEXT, 0, NULL},
    /*025*/ {"排序条件", "本参数是排序的条件，ASC为升序，DESC为降序。例如要对name字段进行降序排序: name DESC ", 0, 0, SDT_TEXT, 0, NULL},

    /*026*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*027*/ {"表名", "本参数是您要写入新记录的表的名称，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*028*/ {"赋值语句", "本参数是您要执行的赋值语句。例如增加一条记录并且为字段name与email分别赋予值“jack”、“jack@126.com”: name='jack',email='jack@126.com'，如果为中文字段名请在字段名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},

    /*029*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*030*/ {"表名", "本参数是您要更新数据的表的名称，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*031*/ {"赋值语句", "本参数是您要执行的赋值语句。例如为字段name与email分别赋予值“sun”、“sun@126.com”: name='sun',email='sun@126.com'，如果为中文字段名请在字段名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*032*/ {"条件", "本参数是查找符合条件的记录。如果为“”空字符串那么将更新所有记录。例如当字段name的内容“jack”时更新记录: name='jack'", 0, 0, SDT_TEXT, 0, NULL},

    /*033*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*034*/ {"表名", "本参数是您要进行删除操作的表的名称，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*035*/ {"条件", "本参数是删除符合条件的记录。如果为“”(空字符串)将删除所有记录。例如当字段name的内容为“jack”时删除记录: name='jack',如果为中文字段名请在字段名两边加“`”,如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},

    /*036*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*037*/ {"字段序号", "本参数是您要取的宽度的字段的序号", 0, 0, SDT_INT, 0, NULL},

    /*038*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*039*/ {"字段名或字段序号", "本参数是您要取得属性的字段的名称或序号", 0, 0, _SDT_ALL, 0, NULL},

    /*040*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*041*/ {"结果变量", "本参数存放调用本命令后的结果", 0, 0, SDT_TEXT, 0, AS_RECEIVE_VAR},

    /*042*/ {"结果变量", "本参数存放调用本命令后的结果", 0, 0, SDT_TEXT, 0, AS_RECEIVE_VAR},

    /*043*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*044*/ {"库名", "本参数是将用创建的库的名称，如果为中文库名请在字段名两边加“`”，如：`测试库`", 0, 0, SDT_TEXT, 0, NULL},

    /*045*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*046*/ {"库名", "本参数是将要删除的库的名称", 0, 0, SDT_TEXT, 0, NULL},

    /*047*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*048*/ {"库名", "本参数是将要查找的库的名称", 0, 0, SDT_TEXT, 0, NULL},

    /*049*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*050*/ {"表名", "本参数是将要创建的表的名称，如果为中文表名请在表名两边加“`”，如：`姓名表`", 0, 0, SDT_TEXT, 0, NULL},
    /*051*/ {"字段信息表", "本参数是由字段信息类型组成的数组，这个数组中最多有一个类型为#字段附加类型的元素", 0, 0, MAKELONG(0x01, 0), 0, AS_RECEIVE_ARRAY_DATA},

    /*052*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*053*/ {"表名", "本参数是将要修改表的表名，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*054*/ {"更改信息表", "本参数记录了新表的相关信息", 0, 0, MAKELONG(0x02, 0), 0, NULL},
    /*055*/ {"字段信息", "本参数在修改类型为#增加字段或#修改字段时使用", 0, 0, MAKELONG(0x01, 0), 0, NULL},
    /*056*/ {"修改类型", "本参数是#增加字段，#修改字段#，#删除字段，#增加索引，#删除索引，#增加主键，#删除主键其中之一", 0, 0, SDT_INT, 0, NULL},

    /*057*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*058*/ {"表名", "本参数是将要删除的表的表名，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},

    /*059*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*060*/ {"表名", "本参数是将要查找的表的表名，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},

    /*061*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*062*/ {"主机", "本参数是与新用户相关联的主机名，如果为空文本则为所有主机", 0, 0, SDT_TEXT, 0, NULL},
    /*063*/ {"用户名", "本参数是新用户名", 0, 0, SDT_TEXT, 0, NULL},
    /*064*/ {"密码", "本参数是用户的密码", 0, 0, SDT_TEXT, 0, NULL},
    /*065*/ {"库名", "本参数是新用户所操作的库，如果为空文本或“*”，则为所有库，如果为中文表名请在表名两边加“`”", 0, 0, SDT_TEXT, 0, NULL},
    /*066*/ {"表名", "本参数是新用户所操作的表，当库名不为空文本或“*”时本参数可以为空文本或“*”即所有表，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*067*/ {"权限", "本参数是新用户对库或表的操作权限。如果为零则为无权限", 0, 0, SDT_INT, 0, NULL},

    /*068*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*069*/ {"用户名", "本参数是将要删除用户的名字", 0, 0, SDT_TEXT, 0, NULL},
    /*070*/ {"主机", "本参数是与用户名相关联的主机名", 0, 0, SDT_TEXT, 0, NULL},

    /*071*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*072*/ {"用户名", "本参数是欲查找的用户名", 0, 0, SDT_TEXT, 0, NULL},
    /*073*/ {"主机", "本参数是与用户名相关联的主机名，实际对应mysql.user表中的host字段", 0, 0, SDT_TEXT, 0, NULL},

    /*074*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*075*/ {"用户名", "本参数是将要修改的用户名", 0, 0, SDT_TEXT, 0, NULL},
    /*076*/ {"主机名", "本参数是与新用户相关联的主机名", 0, 0, SDT_TEXT, 0, NULL},
    /*077*/ {"库名", "本参数是用户操作的新库，如果为空文本或“*”，则为所有库", 0, 0, SDT_TEXT, 0, NULL},
    /*078*/ {"表名", "本参数是用户操作的新表，当库名不为空文本或“*”时本参数可以为空文本或“*”即所有表，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*079*/ {"权限", "本参数是用户的新权限。如果为零则无任何权限", 0, 0, SDT_INT, 0, NULL},

    /*080*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*081*/ {"表名", "本参数是将要建立索引的表，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*082*/ {"列名", "本参数是将要建立索引使用的列（字段）名", 0, 0, SDT_TEXT, 0, NULL},
    /*083*/ {"索引名", "本参数是将要建立的索引名", 0, 0, SDT_TEXT, 0, NULL},

    /*084*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*085*/ {"表名", "本参数是将要删除的索引所在的表，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*086*/ {"索引名", "本参数是将要删除的索引", 0, 0, SDT_TEXT, 0, NULL},

    /*087*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*088*/ {"错误信息", "本参数为错误信息字符串", 0, 0, SDT_TEXT, 0, AS_RECEIVE_VAR},

    /*089*/ {"易语言类型数据", "本参数是易语言中时间日期型或逻辑型的数据", 0, 0, _SDT_ALL, 0, NULL},
    /*090*/ {"时间类型", "本参数是要转换到MYSQL的时间与日期类的类型常量，如#MYSQL日期，#MYSQL时间， #MYSQL日期与时间型，#MYSQL年份型等。注意:当“易语言类型数据”为日期时间型时，本参数有效", 0, 0, SDT_INT, 12, AS_HAS_DEFAULT_VALUE},

    /*091*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*092*/ {"表名", "本参数是您要更新数据的表的名称，如果为中文表名请在表名两边加“`”，如：`姓名`", 0, 0, SDT_TEXT, 0, NULL},
    /*093*/ {"字段名", "本参数是待写入字段名称，注意此字段的字段类型必须是字节集，如果为中文字段名请在字段名两边加“`”", 0, 0, SDT_TEXT, 0, NULL},
    /*094*/ {"条件", "本参数是查找符合条件的记录。如果为“”空字符串那么将添加一条记录。例如当字段name的内容“jack”时更新记录: name='jack'，如果为中文字段名请在字段名两边加“`”", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*095*/ {"字节集", "本参数是待写入的字节集：如果本参数被省略且对应字段可以为NULL，则将该字段值置为NULL；如果本参数未被省略且为空字节集，则将该字段值清空。", 0, 0, SDT_BIN, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*096*/ {"记录集句柄", "本参数必须是本进程调用“取记录集”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*097*/ {"字段", "本参数指定您想要读取的字段，可以是字段名称或是字段序号", 0, 0, _SDT_ALL, 0, NULL},

    /*098*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*099*/ {"库名", "本参数为要选择的数据库名", 0, 0, SDT_TEXT, 0, NULL},

    /*100*/ {"MySql句柄", "本参数必须是本进程调用“连接MySql”命令得到的返回值", 0, 0, SDT_INT, 0, NULL},
    /*101*/ {"状态信息", "本参数为状态信息字符串", 0, 0, SDT_TEXT, 0, AS_RECEIVE_VAR},

    /*102*/ {"SQL语句序号", "SQL语句的序号", 0, 0, SDT_INT, 0, NULL},
    /*103*/ {"返回SQL语句", "返回SQL语句", 0, 0, SDT_TEXT, 0, AS_RECEIVE_VAR},

};

#ifdef _DEBUG    // 这里是为了确认参数序号是否正确, 成员数比最后一个序号大1就是正确
const int dbg_cmd_arg_count__ = sizeof(g_argumentInfo_mysql_global_var) / sizeof(g_argumentInfo_mysql_global_var[0]);
#endif


#define MYSQL_DEF_CMDINFO(_index, _szName, _szEgName, _szExplain, _shtCategory, _wState, _dtRetValType, _wReserved, _shtUserLevel, _shtBitmapIndex, _shtBitmapCount, _nArgCount, _pBeginArgInfo) \
    { _szName, ______E_FNENAME(_szEgName), _szExplain, _shtCategory, _wState, _dtRetValType, _wReserved, _shtUserLevel, _shtBitmapIndex, _shtBitmapCount, _nArgCount, _pBeginArgInfo },


// 易语言每个命令的定义, 会把信息显示在支持库列表里, 这里每个成员都是详细的描述一个命令的信息
CMD_INFO g_cmdInfo_mysql_global_var[] = 
{
    MYSQL_DEF(MYSQL_DEF_CMDINFO)
};

int g_cmdInfo_mysql_global_var_count = sizeof(g_cmdInfo_mysql_global_var) / sizeof(g_cmdInfo_mysql_global_var[0]);

#endif

