1、环境

前端:ASP、vbscript

后端:vb

数据库:Sql Server

2、问题描述

最近在做需求时碰到一个很奇怪的问题,后端通过select *查询带出来的字段,在前端只能获取到部分字段的值,有些字段的值获取不到。

3、解决方法

后来是把sql语句中 p.*的位置放在所有字段的最后面,并且调整了该表的字段顺序,把”text“类型的字段的位置放在最后,即:

在sql语句中,把.*查询也放到最后。

再次调试程序,之前缺失的字段都显出出来了。

4、产生原因

在sql server中是不建议使用select *查询,因为.*查询会查出许多不必要的字段,增大数据库负担,数据传输时间和网络开销。并且在数据库中出现了text这种大数值类型。sqlserver中text字段的最大长度是2^31-1给字符(即2G的存储容量)。因为text字段没有指定长度,所以对于表中的text字段数据库会默认分配很大的空间给这个字段。对于这些大字段,在查询的时候,长度超过 728 字节的时候,会先把超出的数据序列化到另外一个地方,因此读取这条记录会增加一次 io 操作。sqlserver执行select *操作时,是按表结构中字段的定义顺序依次查询的,由于测试环境比较差,因此对于text这种类型的大字段,有可能出现查询超时,导致其他字段也查不到的现象。解决方案是建表的时候尽量避免使用像text这种未定义长度的大字段,如果用了,则把text这种大字段放到表结构所有字段的最后,以及在查询时把大字段的查询顺序放在最后以避免影响其他字段的查询。

5、关联问题

ADODB.Recordset 错误 '800a0bcd' BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

这个问题是由于获取到的select查询的结果集为空导致的,其产生原因也有可能是上文所说的大字段然后查询超时导致其他字段查不到。

6、参考资料

为什么大家都说SELECT * 效率低?看完这篇你就明白了!_程序员小乐-CSDN博客https://blog.csdn.net/xiaoxiaole0313/article/details/107350869/?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242.1

SQL Server中Text和varchar(max)数据类型区别 - 亮将 - 博客园 (cnblogs.com)https://www.cnblogs.com/liangjiang/p/5660902.htmlSQL server 数据库TEXT字段的最大长度问题 急急!-CSDN社区https://bbs.csdn.net/topics/266764

asp前端无法获取后端中select *查询带出来的全部字段的更多相关文章

  1. 获取request中的查询参数

    //获取request中的查询参数 public static Map<String, Object> getRequestParamsByMap(HttpServletRequest r ...

  2. C# 获取url中的查询字符串参数

    /// <summary> /// 获取url中的查询字符串参数 /// </summary> public static NameValueCollection Extrac ...

  3. Oracle中如何查询一个表的所有字段名和数据类型

    Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_ ...

  4. 【本周面试题】第1周 - 获取URL中的查询字符串参数、get和post的区别

    [此系列优先解决自己经历的面试题] 2018.11.16 面试题一:你如何获取浏览器URL中查询字符串中的参数? 题目代码: 测试地址为 https://www.sogou.com/tx?query= ...

  5. 用正则表达式获取URL中的查询参数

    总结获取url中查询参数的两种方式 通过正则表达式获取单个参数 url中的所有查询参数可以通过 window.location.search 字段获取,以字符串的形式返回.并有固定的格式 ?param ...

  6. sqlite数据库 select 查询带换行符数据

    在sqlite 数据库中用 select 语句查询带 换行符的 数据信息 实现 SELECT   * from questions_exec where title like     '%'||x'0 ...

  7. Mysql 在 select 查询时追加(添加)一个字段并指定值

    在特定时候,在 mysql 的查询结果中我们需要追加一个字段来实现某些特定的功能,这时我们可以用到以下语法来实现 值 as 字段比如我们需要给这个查询结果追加一个 xx 字段并赋值为 null ,可以 ...

  8. 【mybatis】mybatis 中select 查询 select * 查询出来的数据,字段值带不出来 数据不全

    原来的代码如下: <select id="findByGoodsUid" resultType="com.pisen.cloud.luna.ms.goods.bas ...

  9. 在sql脚本中获取变量中的查询结果

    )--变量 ) set @itemValue='select @a=getdate()'--赋值 exec sp_executesql @itemValue,N'@a nvarchar(max) ou ...

随机推荐

  1. python之流程控制上-if、while

    流程控制 编写程序,是将自己的逻辑思想记录下来,使得计算机能够执行的过程. 而流程控制,则是逻辑结构中十分重要的一环. 在程序中,基础的流程结构分为顺序结构.分支结构.顺序结构 顺序结构自不必多说,上 ...

  2. BGCN Rec:模型结构概述

    简单论述 BGCN将user-item interaction,user-bundle interaction和bundle-item affiliation 关联到统一的异构图中.以项目节点为桥梁, ...

  3. Docker | 部署nginx服务

    容器时相互隔离的,docker启动的nginx是容器内的服务,不影响我原先服务器上的nginx服务,小伙伴们可大胆尝试 本篇实在linux环境下操作的,主要目的是夺人眼目,对使用Docker部署服务尝 ...

  4. 换工作?试试远程工作「GitHub 热点速览 v.22.40」

    近日,潜在某个技术交流群的我发现即将毕业的小伙伴在焦虑实习.校招,刚好本周 GitHub 热榜有个远程工作项目.不妨大家换个思路,"走"出去也许有更多的机会.当然,除了全球的远程工 ...

  5. C++编程范式(函数)

    1 // 2 // main.cpp 3 // test 4 // 5 // Created by Shaojun on 30/5/2020. 6 // Copyright 2020 Shaojun. ...

  6. vue2使用组件进行父子互相传值的sync语法糖方法和原生方法

    原生方法:(事件名可以不在props通道里) 子类通过props通道绑定父类里data里的jjjjjj(@:fefefeff='jjjjjjjjjjjjj') 父组件通过监听fefeff事件来把子类传 ...

  7. tensorboard图表显示不全的问题

    之前跑bcq生成tensorboard文件的时候,有二十个点用来描图,然而后10个数据点总是不显示,之后将tensorboard换成tensorboardX便解决了问题. 比如 from torch. ...

  8. 2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题

    文章目录 1.效果展示 2.设置背景图的详细步骤 2.1 .下载background插件 2.2 .选择扩展设置 2.3 .在setting.json中编辑 2.4.对应的配置文件 2.5 .重启电脑 ...

  9. 【SSM】学习笔记(二)——SpringMVC入门

    原视频链接:https://www.bilibili.com/video/BV1Fi4y1S7ix/?p=43&spm_id_from=pageDriver&vd_source=8ae ...

  10. 驱动开发:内核层InlineHook挂钩函数

    在上一章<驱动开发:内核LDE64引擎计算汇编长度>中,LyShark教大家如何通过LDE64引擎实现计算反汇编指令长度,本章将在此基础之上实现内联函数挂钩,内核中的InlineHook函 ...