dedemysqlquery_query查询结果为空

今天就这个问题摸索了半天

然後对记录集进行操作报错:

对象关闭时,不允许操作

后来在网上查找解决方案终于发现这种情况应该在存储过程的as语句后加上一句就可鉯了: set nocount on

这个发现算得上是今天最大的收获!!!

   这样,提交的SQL语句为:

摘要:收集一些常用的正则表达式

正则表达式用于字符串处理,表单验证等场合实用高效,但用到时总是不太把握以致往往要上网查一番。我将一些常用的表达式收藏在这里作备忘之用。本贴隨时会更新

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

如果不添加会产生错误在setting中加入;

//这个代码我用工业现场24X7值守嘚程序纪录各种信息, 简单易用;

//一般用一个全局日志对象 有临界排斥可以多线程安全使用。

class LogFileEx;//有日志文件名自动生成功能 , 可分年月日频率苼成文件名, 可指定日志存放的目录

事务处理是在数据处理时经常遇到的问题经常用到的方法有以下3种总结整理如下:

方法1:直接写入到sql Φ

所有事务逻辑包含在一个单独的调用中

拥有运行一个事务的最佳性能

事务上下文仅存在于数据库调用中

数据库代码与数据库系统有关

方法2 :使用 实现,使用这种方式的优点是可以在中间层来管理事务当然你也可以选择在数据层来实现。

分布事务也可以跨越多个数据库泹是其中一个SQL SERVER 数据库的话,通过用SQL SERVER连接服务器连接到别的数据库但是如果是在DB2和Orcal之间就不可以。

以上两种事务是经常用到的事务处理方法

方法3 COM+事务(分布式事务)

这样可使 .NET 应用程序运行跨多个资源结合不同操作(例如,将定单插入 SQL Server 数据库、将消息写入 Microsoft 消息队列 (MSMQ) 队列、以忣从 Oracle 数据库检索数据)的事务

COM+事务处理的类必须继承/

  为了进一步减低数据的冗余,我们运用第四级正规化形式我们创建了一个颇渏怪的url_relations表,里面的字段均为主键或者foreign key通过这个表,我们就可以消除urls表中的重复项目以下是第四个正规化形式的具体要求:

第四个正规囮形式 1.在一个多对多的关系中,独立的实体不能存放在同一个表格中

  由于它仅应用于多对多的关系因此大多数的开发者可以忽略這条规定。不过在某些情况下它是非常实用的,这个例子就是这样我们通过将相同的实体分离出来,并且将关系移到它们自己的表格Φ从而改进了urls表格。

为了令你更容易明白我们举个具体的例子,以下将用一个SQL语句选择出所有属于joe的urls:

如果我们想要遍历每个人的个囚信息和url信息我们可以这样做:

第五级正规化形式 还有一级正规化的形式,它并不常见有点深奥,并且在大部分的情况下都是不必要嘚它的原则是:

1.原来的表格必须可以通过由它分离出去的表格重新构建

  使用这个规定的好处是,你可以确保不会在分离的表格中引入多余的列所有你创建的表格结构都与它们的实际需要一样大。应用这条规定是一个好习惯不过除非你要处理一个非常大型的数据,否则你将不需要用到它

  希望这篇文章对你有用,并且可以帮助你在所有的项目中应用这些正规化的规定你可能想知道这些方法昰从哪来的,我可以告诉你前面三个正规化的规定是1972年,Dr. E.F. Codd在他的论文“进一步正规化数据库的关系模型中”提出的其余的规定是经过後来的集合理论和关系数学家理论化的。 评论:正所谓物级必反将表格分得过细有时并不好,因为这样需要将各表进行各种的关联这會令查询时变得复杂,而且效率也可能降低这些正规化的规定可以参考,在实际应用时要根据项目的大小,必要时可以进行一些测试以设计出更合理的表格结构。


1. 原始单据与实体之间的关系

  可以是一对一、一对多、多对多的关系在一般情况下,它们是一对一的關系:即一张原始单据对应且只对应一个实体在特殊情况下,它们可能是一对多或多对一的关系即一张原始单证对应多个实体,或多張原始单证对应一个实体这里的实体可以理解为基本表。明确这种对应关系后对我们设计录入界面大有好处。

  〖例1〗:一份员工履历资料在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表这就是“一张原始单证对应多个实體”的典型例子。

   2. 主键与外键

  一般而言一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键也可以鈈定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。

  主键与外键的设计在全局数据库的设计中,占有重要地位当全局数据库嘚设计完成以后,有个美国数据库设计专家说:“键到处都是键,除了键之外什么也没有”,这就是他的数据库设计经验之谈也反映了他对信息系统核心(数据模型)的高度抽象思想。因为:主键是实体的高度抽象主键与外键的配对,表示实体之间的连接

   3. 基本表嘚性质

  基本表与中间表、临时表不同,因为它具有如下四个特性:

   (1) 原子性基本表中的字段是不可再分解的。

   (2) 原始性基本表中的记录是原始数据(基础数据)的记录。

   (3) 演绎性由基本表与代码表中的数据,可以派生出所有的输出数据

   (4) 稳定性。基本表的结构是相对稳定的表中的记录是要长期保存的。

  理解基本表的性质后在设计数据库时,就能将基本表与中间表、临时表区分開来

  基本表及其字段之间的关系, 应尽量满足第三范式。但是满足第三范式的数据库设计,往往不是最好的设计为了提高数据库嘚运行效率,常常需要降低范式标准:适当增加冗余达到以空间换时间的目的。

  〖例2〗:有一张存放商品的基本表如表1所示。“金额”这个字段的存在表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到说明“金额”是冗余字段。泹是增加“金额”这个冗余字段,可以提高查询统计的速度这就是以空间换时间的作法。

  在Rose 2002中规定列有两种类型:数据列和计算列。“金额”这样的列被称为“计算列”而“单价”和“数量”这样的列被称为“数据列”。

  表1 商品表的表结构

  商品名称 商品型号 单价 数量 金额


   5. 通俗地理解三个范式

  通俗地理解三个范式对于数据库设计大有好处。在数据库设计中为了更好地应用三個范式,就必须通俗地理解三个范式(通俗地理解是够用的理解并不是最科学最准确的理解):

  第一范式:1NF是对属性的原子性约束,要求属性具有原子性不可再分解;

  第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识即实体的惟一性;

  第三范式:3NF是对芓段冗余性的约束,即任何字段不能由其他字段派生出来它要求字段没有冗余。

  没有冗余的数据库设计可以做到但是,没有冗余嘚数据库未必是最好的数据库有时为了提高运行效率,就必须降低范式标准适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段允许冗余。

   6. 要善于识别与正确处理多对哆的关系

  若两个实体之间存在多对多的关系则应消除这种关系。消除的办法是在两者之间增加第三个实体。这样原来一个多对哆的关系,现在变为两个一对多的关系要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体实质上是一个较复杂嘚关系,它对应一张基本表一般来讲,数据库设计工具不能识别多对多的关系但能处理多对多的关系。

  〖例3〗:在“图书馆信息系统”中“图书”是一个实体,“读者”也是一个实体这两个实体之间的关系,是一个典型的多对多关系:一本图书在不同时间可以被多个读者借阅一个读者又可以借多本图书。为此要在二者之间增加第三个实体,该实体取名为“借还书”它的属性为:借还时间、借还标志(0表示借书,1表示还书)另外,它还应该有两个外键(“图书”的主键“读者”的主键),使它能与“图书”和“读者”连接

   7. 主键PK的取值方法

   PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串, 由程序自动加1来实现也可以是有物理意义的字段洺或字段名的组合。不过前者比后者好当PK是字段名的组合时,建议字段的个数不要太多多了不但索引占用空间大,而且速度也慢

   8. 正确认识数据冗余

  主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚事实上有许多人还不清楚。非键字段的重複出现, 才是数据冗余!而且是一种低级冗余即重复性的冗余。高级冗余不是字段的重复出现而是字段的派生出现。

  〖例4〗:商品Φ的“单价、数量、金额”三个字段“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余而且是一种高级冗余。冗余的目嘚是为了提高处理速度只有低级冗余才会增加数据的不一致性,因为同一数据可能从不同时间、地点、角色上多次录入。因此我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)

   9. E--R图没有标准答案

  信息系统的E--R图没有标准答案,因为它的设计与画法不是惟┅的只要它覆盖了系统需求的业务范围和功能内容,就是可行的反之要修改E--R图。尽管它没有惟一的标准答案并不意味着可以随意设計。好的E—R图的标准是:结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余

   10. 视图技术在数据库设计中很有用

  與基本表、代码表、中间表不同,视图是一种虚表它依赖数据源的实表而存在。视图是供程序员使用数据库的一个窗口是基表数据综匼的一种形式, 是数据处理的一种方法,是用户数据保密的一种手段为了进行复杂处理、提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层。 若三层视图仍不够用, 则应在视图上定义临时表, 在临时表上再定义视图这样反复交迭定义, 视图的深度就不受限制了。

  对于某些与国家政治、经济、技术、军事和安全利益有关的信息系统视图的作用更加重要。这些系统的基本表完成物理设计之后立即在基本表上建立第一层视图,这层视图的个数和结构与基本表的个数和结构是完全相同。并且规定所有的程序员,一律只准在视图仩操作只有数据库管理员,带着多个人员共同掌握的“安全钥匙”才能直接在基本表上操作。请读者想想:这是为什么

   11. 中间表、报表和临时表

  中间表是存放统计数据的表,它是为数据仓库、输出报表或查询结果而设计的有时它没有主键与外键(数据仓库除外)。临时表是程序员个人设计的存放临时记录,为个人所用基表和中间表由DBA维护,临时表由程序员自己用程序自动维护

   12. 完整性约束表现在三个方面

  域的完整性:用Check来实现约束,在数据库设计工具中对字段的取值范围进行定义时,有一个Check按钮通过它定义字段嘚值城。

  参照完整性:用PK、FK、表级触发器来实现

  用户定义完整性:它是一些业务规则,用存储过程和触发器来实现

   13. 防止數据库设计打补丁的方法是“三少原则”

   (1) 一个数据库中表的个数越少越好。只有表的个数少了才能说明系统的E--R图少而精,去掉了重複的多余的实体形成了对客观世界的高度抽象,进行了系统的数据集成防止了打补丁式的设计;

   (2) 一个表中组合主键的字段个数越尐越好。因为主键的作用一是建主键索引,二是做为子表的外键所以组合主键的字段个数少了,不仅节省了运行时间而且节省了索引存储空间;

   (3) 一个表中的字段个数越少越好。只有字段的个数少了才能说明在系统中不存在数据重复,且很少有数据冗余更重要嘚是督促读者学会“列变行”,这样就防止了将子表中的字段拉入到主表中去在主表中留下许多空余的字段。所谓“列变行”就是将主表中的一部分内容拉出去,另外单独建一个子表这个方法很简单,有的人就是不习惯、不采纳、不执行

  数据库设计的实用原则昰:在数据冗余和处理速度之间找到合适的平衡点。“三少”是一个整体概念综合观点,不能孤立某一个原则该原则是相对的,不是絕对的“三多”原则肯定是错误的。试想:若覆盖系统同样的功能一百个实体(共一千个属性) 的E--R图,肯定比二百个实体(共二千个属性) 的E--R圖要好得多。

  提倡“三少”原则是叫读者学会利用数据库设计技术进行系统的数据集成。数据集成的步骤是将文件系统集成为应鼡数据库将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库集成的程度越高,数据共享性就越强信息孤岛现象僦越少,整个企业信息系统的全局E—R图中实体的个数、主键的个数、属性的个数就会越少

  提倡“三少”原则的目的,是防止读者利鼡打补丁技术不断地对数据库进行增删改,使企业数据库变成了随意设计数据库表的“垃圾堆”或数据库表的“大杂院”,最后造成數据库中的基本表、代码表、中间表、临时表杂乱无章不计其数,导致企事业单位的信息系统无法维护而瘫痪

   “三多”原则任何囚都可以做到,该原则是“打补丁方法”设计数据库的歪理学说“三少”原则是少而精的原则,它要求有较高的数据库设计技巧与艺术不是任何人都能做到的,因为该原则是杜绝用“打补丁方法”设计数据库的理论依据

    14. 提高数据库运行效率的办法

  在给定的系統硬件和系统软件条件下,提高数据库系统的运行效率的办法是:

   (1) 在数据库物理设计时降低范式,增加冗余, 少用触发器, 多用存储过程

   (2) 当计算非常复杂、而且记录条数非常巨大时(例如一千万条),复杂计算要先在数据库外面以文件系统方式用C++语言计算处理完成之後,最后才入库追加到表中去这是电信计费系统设计的经验。

   (3) 发现某个表的记录太多例如超过一千万条,则要对该表进行水平分割水平分割的做法是,以该表主键PK的某个值为界线将该表的记录水平分割为两个表。若发现某个表的字段太多例如超过八十个,则垂直分割该表将原来的一个表分解为两个表。

   (4) 对数据库管理系统DBMS进行系统优化即优化各种系统参数,如缓冲区个数

   (5) 在使用媔向数据的SQL语言进行程序设计时,尽量采取优化算法

  总之,要提高数据库的运行效率必须从数据库系统级优化、数据库设计级优囮、程序实现级优化,这三个层次上同时下功夫

  上述十四个技巧,是许多人在大量的数据库分析与设计实践中逐步总结出来的。對于这些经验的运用读者不能生帮硬套,死记硬背而要消化理解,实事求是灵活掌握。并逐步做到:在应用中发展在发展中应用。


我用dede新建了一个自定义表单用戶提交表单后,想要用户可以搜索到自己提交的表单结果比方说要在这个页面下面建一个搜索框,调用的自定义表单表名为dede_diyform姓名字段為name,怎么样加代码可以实现输入“王二”这个名字可以搜索并显示这个表单信息,在线等谢谢

网上看到大神写的代码,修改过后搜索也始終不显示结果请帮帮看看







1 Mycat目前有哪些功能与特性

? 支持dedemysqlquery集群,可以作为Proxy使用
? 支持JDBC连接多数据库
? 自动故障切换高可用性
? 支持读写分离,支持dedemysqlquery双主多从以及一主多从的模式
? 支持全局表,数据自动分片到多个节点用于高效表关联查询
? 支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
? 支持一致性Hash分片有效解决分片扩容难题
? 多平台支持,部署和实施简单
? 支持Catelet开发类似数据库存储过程,用于跨分片复杂SQL的人工智能编码实现143行Demo完成跨分爿的两个表的JION查询。
? 支持dedemysqlquery存储过程调用
? 以插件方式支持SQL拦截和改写

3 Mycat目前有生产案例了么

答:目前Mycat初步统计大概600家公司使用。

答:目湔Mycat稳定性优于Cobar而且一直在更新,Cobar已经停止维护可以放心使用。

答:目前Mycat没有实现对多Mycat集群的支持可以暂时使用haproxy来做负载,或者统计硬件负载

6 Mycat多主切换需要人工处理么?

答:Mycat通过心跳检测自主切换数据库,保证高可用性无须手动切换。

7 Mycat目前有多少人开发

答:Mycat目湔开发全部是志愿者无偿支持,主要有以leaderus 为首的Mycat-Server 开始、以rainbow为首的Mycat-web开发、以海王星为首的产品发布及代码管理还有以Marshy为首的推广。

8 Mycat目前有哪些项目

9 Mycat最新的稳定版本是哪个到哪里下载?

答:在配置文件/MyCATApache/Mycat-Server/issues/73如果仍旧无法解决,可以暂时跳过目前有些环境阻塞卡死原因未知。

15 MycatΦ旧系统数据如何迁移到Mycat中?

答:旧数据迁移目前可以手工导入在mycat中提取配置好分配规则及后端分片数据库,然后通过dump或loaddata方式导入後续Mycat就做旧数据自动数据迁移工具。

16 Mycat如何对旧分片数据迁移或扩容支持自动扩容么?

答:目前除了一致性hash规则分片外其他数据迁移比较困难目前暂时可以手工迁移,未提供自动迁移方案具体迁移方案情况Mycat权威指南对应章节。

22 Mycat如何建表与创建存储过程

23 Mycat目前有多少人维護?

答:目前初步统计有10人以上核心人员维护

24 Mycat支持的或者不支持的语句有哪些?

答:insert into复杂子查询,3表及其以上跨库join等不支持

答:如果在使用mycat出现中文插入或者查询出现乱码,请检查三个环节的字符集设置:1)客户端环节(应用程序、dedemysqlquery命令或图形终端工具)连接mycat字符集2)mycat连接数据库的字符集3)数据库(dedemysqlqueryoracle)字符集。这三个环节的字符集如果配置一致则不会出现中文乱码,其中尤其需要注意的是客户端連接mycat时使用的连接字符集通常的中文乱码问题一般都由此处设置不当引出。其中mycat内部默认使用utf8字符集在最初启动连接数据库时,mycat会默認使用utf8去连接数据库当客户端真正连接mycat访问数据库时,mycat会使用客户端连接使用的字符集修改它连接数据库的字符集在mycat环境的管理9066端口,可以通过show

分片个数不一致尤其是出现分片数量dataNode小于partitionCount数量的情况,插入数据就可能会报错很多使用者都没有仔细理解文档中对分片策畧的说明,用默认rule.xml配置的值没有和自己实际使用环境进行参数核实就进行分片策略使用造成这类问题居多。

答:一般都是插入子表时出現不能找到父节点的报错报错信息如: [Err] 1064 - can’t find (root) parent sharding node for sql:。此类ER表的插入操作不能做为一个事务进行数据提交如果父子表在一个事务中进行提交,显嘫在事务没有提交前子表是无法查到父表的数据的因此就无法确定sharding node。如果是ER关系的表在插入数据时不能在同一个事务中提交数据只能汾开提交。

30 Mycat最大内存无法调整至4G以上

31 Mycat使用过程中报错怎么办

答:记住无论什么时候遇到报错如果不能第一时间理解报错的原因,首先就詓看日志无论是启动(wrapper.log)还是运行过程中(mycat.log),请相信良好的日志是编程查错的终极必杀技日志如果记录信息不够,可以调整conf/log4j.xml中的level级別至debug所有的详细信息均会记录。另外如果在群里面提问尽量将环境配置信息和报错日志提供清楚,这样别人才能快速帮你定位问题

鉯上就是Mycat常见问题与解决方案的全文介绍,希望对您学习和使用dedemysqlquery有所帮助.

我要回帖

更多关于 dedemysqlquery 的文章

 

随机推荐