SQL Server Compact Edition ISNULL(sth, ' ') 返回一个布尔值?
Posted
技术标签:
【中文标题】SQL Server Compact Edition ISNULL(sth, \' \') 返回一个布尔值?【英文标题】:SQL Server Compact Edition ISNULL(sth, ' ') returns a boolean value?SQL Server Compact Edition ISNULL(sth, ' ') 返回一个布尔值? 【发布时间】:2011-05-04 23:18:32 【问题描述】:我有一个Accounts
表,其中包含name, password
和email
列。它们都是nvarchar
类型。
我写了一个类似
SELECT name, password, ISNULL(email, 'eeee')
FROM Accounts
WHERE name = '" + textBox1.Text + "' AND password ='" + textBox2.Text + "'"
我以reader.getString(2)
阅读电子邮件,因为它是nvarchar
。
我从网上了解到,如果 email
为 NULL,那么它应该返回 eeee
。但它说System.boolean
不能翻译成System.String
。
我该如何纠正这个问题?为什么它返回一个布尔值?
【问题讨论】:
甜蜜的 SQL 注入你已经开始了 我想你想要ifnull()
当我尝试 ifnull 时,它无法识别该功能。在互联网上它说它是 mysql,而不是 microsoft sql server。
阅读此内容:xkcd.com/327 了解 SQL 注入是什么以及可以对您的系统做什么,如果您在不检查任何内容的情况下将您的 SQL 语句连接在一起......您应该使用 改为参数化查询!
【参考方案1】:
根据this ISNULL
未在 SQL Server CE 中实现。不过,我希望看到出现语法错误。
解决方法:您可以使用CASE WHEN email IS NULL THEN 'eeee' ELSE email END
或COALESCE
。最好是后者。
也使用参数化查询。如果您不知道为什么要这样做,请学习。
【讨论】:
谢谢它的工作。 4 分钟后我会尽快接受您的答复。以上是关于SQL Server Compact Edition ISNULL(sth, ' ') 返回一个布尔值?的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL Server Compact 4.0 迁移到 SQL Server Express 后提供程序错误
SQL Server 可以复制到 SQL Server Compact Edition 吗?
SQL Server Express 和 SQL Server Compact Edition
从使用 SQL Server Express 切换到 SQL Server Compact
SQL Server Compact Edition 和 SQL Server 2008 Management Studio