在尝试查询Firebird表时,我确实需要有人帮助解决编码问题。
我使用Firebird Maestro连接到firebird数据库:
问题在于,每当我在SQL查询中包含西里尔文字母时,Firebird都无法正确理解它们。
例如,考虑一些带有西里尔字母的查询:
SELECT * FROM ROYALTY
WHERE ROYALTY.PRIM = 'Кириллица'
即使在PRIM行中有一行包含'Кириллица'值,它也不会返回任何值。
但是,只使用拉丁字母时一切正常:
SELECT * FROM ROYALTY
WHERE ROYALTY.PRIM = 'Latin letters'
请问有人建议做什么吗?
以下是截图,让我的观点清楚:
我尝试使用以下字符集连接到数据库但没有正面结果:
其他信息:
答案 0 :(得分:3)
检查您用于此列的字符集,并确保使用连接字符集,即系统的字符集。 尝试使用Flamerobin或DatabaseWorbench,或者可能是Firebird Maestro可以帮助您,它显然与您正在使用的工具相关。 Firebird本身使用西里尔字母没有问题 对于数据库中的Charset,请选择UTF8。
答案 1 :(得分:1)
这里的问题是您没有使用参数化查询。在IBExpert中,您可以输入一个“:name”分号和参数的名称,它将在下面的窗口中显示。
在Java / C#.Net中使用API创建带参数的查询。现在你正在做的是在SQL字符串中提供非ANSI字符,这不会保存你的期望。
我看到你正在使用Firebird Maestro,我不确定该产品用于参数的是什么,但值得一看他们的文档以了解它是什么。 http://www.sqlmaestro.com/products/firebird/maestro/help/10_04_00_query_parameters/实际上,它的格式与冒号和参数的名称相同。