c#中的更新语句
Posted
技术标签:
【中文标题】c#中的更新语句【英文标题】:update statement in c# 【发布时间】:2013-04-11 20:00:47 【问题描述】:有人知道为什么 tihs 代码不起作用吗?
程序说“无效使用 null”。
在访问这个代码是工作,但不是雇用。 UPDATE cas SET cas.skupaj = CDbl([Odhod]-[Prihod])*24;
try
OleDbConnection conn = GetConnection();
conn.Open();
String MyString = @"UPDATE cas SET skupaj = CDbl(Odhod-Prihod)*24 " ;
OleDbCommand command = new OleDbCommand(MyString, conn);
command.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Uspešno dodano v PB!");
catch (Exception ex)
MessageBox.Show(ex.Message);
【问题讨论】:
这真是令人困惑。错误消息Invalid use of null
是Access 错误消息。你是如何在 C# 代码中得到它的?当您说这在 access 中有效时,这意味着您可以在 Access 中运行上述确切的 SQL 语句而不会出现任何错误?
可能是由于任一列 (Odhod-Prihod) 的 NULL 值,AS CDate 无法处理 Null 值。
HansUp 发布的代码正在运行。在查询中必须是Odhod Not Null and Prihod Not Null
的位置。
【参考方案1】:
在 Access Immediate 窗口会话中,这些语句抛出错误 94,“无效使用 Null”。
? CDbl(Null)
? CDbl(10 - Null)
? CDbl(Null - 10)
? CDbl(Null - Null)
修改您的查询以确保您不提供CDbl()
Null 值。
UPDATE cas
SET skupaj = CDbl(Odhod-Prihod)*24
WHERE
Odhod Is Not Null
AND Prihod Is Not Null
OTOH,不清楚为什么需要将该计算值存储到skupaj
。您可以在需要时使用SELECT
查询返回它,这样您就不必在Odhod
或Prihod
值发生变化时再次运行UPDATE
。
SELECT CDbl(Odhod-Prihod)*24 AS skupaj
FROM cas
WHERE
Odhod Is Not Null
AND Prihod Is Not Null
【讨论】:
以上是关于c#中的更新语句的主要内容,如果未能解决你的问题,请参考以下文章
C# 中的 Sql Parser 用于语法检查 Oracle 语句
在 Access 数据库中更新密码时 UPDATE 语句中的语法错误