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, passwordemail 列。它们都是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 ENDCOALESCE。最好是后者。

也使用参数化查询。如果您不知道为什么要这样做,请学习。

【讨论】:

谢谢它的工作。 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

使用 SQL Server Compact 与专用 SQL Server 数据库的缺点