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 查询返回它,这样您就不必在OdhodPrihod 值发生变化时再次运行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 语句中的语法错误

sql语句将Excel中的一列批量更新到sql server中的一列中?

C#中的语句

C#中的语句

C#中的switch语句失败?