欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

sqlite库——c语言实现匹配已知字符串中某个字段(该字段在其他表中),在其他表中获取值并显示

发布时间:2025/10/17 68 豆豆
生活随笔 收集整理的这篇文章主要介绍了 sqlite库——c语言实现匹配已知字符串中某个字段(该字段在其他表中),在其他表中获取值并显示 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题描述:

1、部分sql语句:select id,name,grouname, poliname;

2、表名:user_resource;用户组表名:usergroup_name;

3、用户所在的用户组名usergroup_name ;

即,需要根据以上条件拼接sql语句:

select id,name,grouname,(select poliname from user_group_resource where name="usergroup_name") as poliname from user_resource;

 

用户表user_resource中的字段有如下所示:

用户组表中的字段如下所示:

 

显示用户user_resource的部分信息(id,name,grouname):

显示用户组user_group_resource的部分信息(id, name, poliname):

 

要求:user_name =》 usergroup_name -》 policy_name一起显示:

已知条件:

1、部分sql语句:select id,name,grouname, poliname;

2、用户表名:user_resource;用户组表名:usergroup_name;

3、用户所在的用户组名usergroup_name ;

即,需要根据以上条件拼接sql语句:

select id,name,grouname,(select poliname from user_group_resource where name="usergroup_name") as poliname from user_resource;

 

实现的函数:

//Add by swj --- 20180719 求出用户名对应的用户的资源名称char sql[MAX_BUF] = "select id,name,grouname, poliname ";DEBUG_PRINT("%s\n", sql);char buf[MAX_BUF] = {0};strncpy(buf, sql, VALUE_LENGTH);char cond[MAX_BUF] = {0};char str[MAX_BUF] = {0};char *val = strtok(buf, " "); //以空格和,分隔while(val){//select *,'A' as 'type' from user_resource;sprintf(cond, " %s", val);//在策略表中查找用户对应的资源信息 并拼接到sql语句中if((strcmp(cond, " poliname") == 0) || (strcmp(cond, " poliname,") == 0)) //注意有个空格;poliname字段位置{strcat(str, "(select poliname from user_group_resource where name='usergroup_name') as ");}val = strtok(NULL, " ");strcat(str, cond);}strcat(str, " from user_resource;");memset(sql,0,strlen(sql));strcat(sql,str);DEBUG_PRINT("%s\n", sql);

 

执行结果:

总结

以上是生活随笔为你收集整理的sqlite库——c语言实现匹配已知字符串中某个字段(该字段在其他表中),在其他表中获取值并显示的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。