firebird - 使用 Firebird C API 和参数化插入进行空终止符 + 字符串匹配
问题描述
我有几个 VARCHAR 列。使用参数化语句执行插入后,我想查询其中一个,例如select * from my_table where name = 'my_varchar'
.
如果我插入我的 char 数组,这将正常工作sqllen=strlen(my_char_array)
。但是,字符串在读取时不会以空值终止。我可以在 sqllen 添加一个空终止符,但是我的字符串都将是 varchar 的最大大小。如果我设置sqllen=strlen(my_char_array)+1
,则字符串具有正确的空终止符以供读取,但 select 语句失败(由于此添加的字符,没有匹配 'max' )。如果我这样做,它可以与添加的空终止符一起使用select * from my_table where name like 'my_varchar%'
,但这似乎是一个相当不雅的解决方案。
有没有办法获得正确的空终止字符串,同时仍然允许精确的相等字符串搜索正常工作?我有一种感觉,我错过了一些非常简单的东西,如果有任何建议,我将不胜感激!
解决方案
在 Firebird API 中无法获取或使用以 null 结尾的字符串。
SQL_TEXT 是一个固定长度的字符数组。
SQL_VARYING 是一个 param_vary 结构,具有长度和固定长度的字符数组,没有任何特殊终止。
推荐阅读
- node.js - SNS - 使用令牌获取端点 arn?
- github - GitHub 将提交消息中的“@Something”替换为某个陌生人用户资料的链接
- javascript - 移动版 DataTables 会导致 jQuery 停止工作
- css - 无法将 CSS 添加到 Div 包装锚标记
- asp.net - Xamarin 表单 ASP.NET android 模拟器无法访问 localhost API
- typescript - 反应本机打字稿catch子句中的意外标记
- c++ - 如何制作一个接受代码块的函数
- flutter - 未处理的异常:在空值 E/flutter (28057) 上使用空检查运算符:#0 DBHelper._createDB
- javascript - 如何在 if else 语句中添加 PHPmailer 并单击按钮通过它发送电子邮件?
- c# - 通过 Nuget 安装了 DocumentFormat.OpenXML,但得到“无法加载文件或程序集 'System.IO.Packaging'”