C# 为什么会出现这种语法逻辑错误?

C# 为什么会出现这种语法逻辑错误?,c#,winforms,sqlite,sql-update,C#,Winforms,Sqlite,Sql Update,我有一个基本的windows窗体应用程序,用于连接和显示数据库。要使用2个表中的信息更新其中一个数据库 将帐户更新为 集合应计=(a.应计+(p.intrate/365)*余额) 从客户c加入产品p 在p.prodid=a.prodid上 其中c.custid=a.custid,active=1 在DB浏览器中工作 使用(SQLiteCommand cmd=conncount.CreateCommand()) { //将客户详细信息添加到数据库中 cmd.CommandText=@“将帐户更新

我有一个基本的windows窗体应用程序,用于连接和显示数据库。要使用2个表中的信息更新其中一个数据库

将帐户更新为
集合应计=(a.应计+(p.intrate/365)*余额)
从客户c加入产品p
在p.prodid=a.prodid上
其中c.custid=a.custid,active=1
在DB浏览器中工作

使用(SQLiteCommand cmd=conncount.CreateCommand())
{
//将客户详细信息添加到数据库中
cmd.CommandText=@“将帐户更新为集合应计=(a.preduate+((p.intrate/365)*余额))从客户c在p.prodid=a.prodid上加入产品p,其中c.custid=a.custid且活动=1”;
cmd.ExecuteNonQuery();
MessageBox.Show(“每日累计更新”);
}
在我的应用程序中出现以下错误:

System.Data.SQLite.SQLiteException:“SQL逻辑错误 接近“FROM”:语法错误'


早于3.33.0的SQLite版本不支持代码中的
UPDATE…FROM
语句的语法
可以对相关子查询使用较旧的语法:

UPDATE account AS a 
SET accrued = a.accrued + 
    (SELECT p.intrate/365
    FROM customer c JOIN product p 
    ON p.prodid = a.prodid
    WHERE c.custid = a.custid) * a.balance
WHERE a.active = 1  

检查应用程序使用的SQLite版本。执行
选择sqlite_version()并记录结果。在dB browser上显示3.33.0这是dB browser使用的SQLite版本。您的应用程序可能使用不同的版本。啊,很抱歉,这是3.32.1自版本3.33.0以来,UPDATE语句中的FROM语法受支持:查询可以使用较旧的语法编写,但您必须提及它们所属的
balance
active
列。