在帮朋友调试kbmmw 服务器的时候,发现用uindac 访问sql server作为后台时,碰见一个问题。

具体如下:

cx.Close;
cx.sql.add('select * from T where id=:id'); // 这里id 是整数字段
cx.Prepare;
cx.ParamByName('id').AsString:='';
cx.Open;

这一句运行时不出现错误,但是返回结果为空,很是奇怪。

cx.Close;
cx.sql.add('select * from T where id=:id'); // 这里id 是整数字段
cx.Prepare;
cx.ParamByName('id').Asinteger:=;
cx.Open;

当改成这样的化,就可以返回正常结果。

经过查询devart 的论坛,发现这是sql server 本身的问题。

要使第一段代码正常工作,需要增加一行代码。

cx.SpecificOptions.Values['DescribeParams'] := 'True';
cx.Close;
cx.sql.add('select * from T where id=:id'); // 这里id 是整数字段
cx.Prepare;
cx.ParamByName('id').AsString:='';
cx.Open;

这样sql server 就可以正常解析参数了。

在kbmmw 中使用unidac 访问sql server 的同学,如果遇见类似这样的问题,可以参考一下。

       q := TUniQuery.Create(nil);
q.Options.FieldsOrigin := True;
SetSpecificOptions(q.SpecificOptions);
q.Connection := c.Database;
q.SQL.Assign(CookedQuery); q.SpecificOptions.Values['DescribeParams'] := 'True'; // 这一句对sql server 很重要
q.Prepare;
UniDACCopyInputParamsValueAndType(Params,q.Params,
Connection.ConnectionPool.MetaData.UnicodeOptions);
q.Open; // After the query is open, also remember to get the resulting params from it.
Params.Assign(q.Params);
Result:=q;

2017.3.8

最新kbmmw已经支持直接在控件中设置上面属性,不用修改源码了。

unidac 访问sql server 字符查询参数失效问题及解决办法的更多相关文章

  1. SQL SERVER中查询参数为空(null)时默认查询所有的实现

    最近在项目中碰到一个比较有意思的问题,网上查找了一些方法,在这里总结分享一下. 我们经常会碰到这样的场景:需要查询数据,有一些查询条件,但是查询的时候,我们希望在某个条件为空的时候,则不筛选这个条件, ...

  2. SQL SERVER 数据库被标记为“可疑”的解决办法

    问题背景: 日常对Sql Server 2005关系数据库进行操作时,有时对数据库(如:Sharepoint网站配置数据库名Sharepoint_Config)进行些不正常操作如数据库在读写时而无故停 ...

  3. 安装 SQLManagementStudio_x86_CHS(SQL Server Management Studio) 老提示重启的解决办法

    安装 SQL Server Management Studio(SQLManagementStudio_x86_CHS)时,检测时不通过,提示重启电脑,我以为她安装了什么心软件没有重启:所以重启了电脑 ...

  4. sql server 数据库正在使用该文件的解决办法

    今天在帮朋友还原数据库时遇到了一个问题.朋友用的是sql server 2008数据库,本身有一个数据库,他在修改程序的时候,想修改数据库的内容.但是又不想在原数据库中修改.想备份还原出一个数据库然后 ...

  5. sql server 2008评估期已到的解决办法

    点击开始-所有程序-Microsoft SQL Server 2008-配置工具-SQL Server 安装中心然后点击左侧的维护,在点击右侧的版本升级,接着按照提示一直点下一步,到产品密钥的时候输入 ...

  6. SQL server 2008无法连接Local服务器的解决办法

    SQL的有些服务总是在关机的时候自动关闭,然后你可以打开 控制面板——管理工具——服务,然后找到SQL相关的服务,右键——属性,里面有设置,可以设成自动启动

  7. 【转】Sql Server参数化查询之where in和like实现详解

    转载至:http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARINDE ...

  8. 转载 50种方法优化SQL Server数据库查询

    原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...

  9. 【转载】Sql Server参数化查询之where in和like实现详解

    文章导读 拼SQL实现where in查询 使用CHARINDEX或like实现where in 参数化 使用exec动态执行SQl实现where in 参数化 为每一个参数生成一个参数实现where ...

随机推荐

  1. 使用nginx-vod-module hls &&dash &&Thumbnail 处理

      备注: 以前写过使用ffmpeg 转换为m3u8进行hls 视频处理,实际上有一个开源的很强大的工具,我们基本不用什么代码就可以实现hls. dash.Thumbnail ,很强大 安装 使用源码 ...

  2. HTML5 Geolocation用来定位用户的位置。

    HTML5 Geolocation用来定位用户的位置. 定位用户的位置 HTMl5 Geolocation API用来得到用户的地理位置. 由于这个可能和个人隐私相关.除非用户同意否则不能使用. 浏览 ...

  3. 写时复制和fork,vfork,clone

    写时复制 原理: 用了“引用计数”,会有一个变量用于保存引用的数量.当第一个类构造时,string的构造函数会根据传入的参数从堆上分配内存,当有其它类需要这块内存时,这个计数为自动累加,当有类析构时, ...

  4. 【转】Linux shell的&&和||

    原文网址:http://www.2cto.com/os/201302/189655.html Linux shell的&&和||   shell 在执行某个命令的时候,会返回一个返回值 ...

  5. 什么是HBase(五) HBase的运维工具

    常用工具 文件修复 hbck 文件查看 hfile WAL查看工具 hlog 压缩测试工具 compressTest(字段前缀编码以及block压缩设置后进行测试) 数据迁移工具copyTable 导 ...

  6. delphi webbrowser 常用方法示例

    var Form : IHTMLFormElement ; D:IHTMLDocument2 ; begin with WebBrowser1 do begin D := Document as IH ...

  7. 智能家居入门DIY——【五、执行命令】

    前面几篇介绍了ESP8266使用AT命令来连接WIFI实现一系列功能.这一篇介绍一下使用Wemos D1 Wifi来进行开发,当然也可以用常见的8针ESP8266来完成(只是需要按网上的方法将Ardu ...

  8. SlickEdit V21 2016 破解教程,win linux mac

    最近主要工作系统转到LInux上面来了,Slickedit的安装破解也费了些事,今天将过程整理一下做个记录. 说明:SlickEdit pro V21.03 Linux 64位实测可用,MAC实测可用 ...

  9. [Java.web]JSTL 使用

    <%@ page import="cn.itcast.domain.Person"%> <%@ page language="java" im ...

  10. Appium使用ID进行定位

      1 使用uiautomatorviewer地获取元素ID 路径:sdk\tools\uiautomatorviewer.bat 2 脚本中增加点击事件 driver.find_element_by ...