我嘗試使用此代碼的SQLite錯誤附近「WITH」
SQLiteConnection conn = new SQLiteConnection("Data Source=" + filename + ";Version=3;");
public static string filename = CGlobalVar.CurrentMissionFolder + @"\DBase\BMS_Ops";
conn.Open();
SQLiteCommand scom = new SQLiteCommand(conn);
scom.CommandText = "WITH NewNames(SatuanID, ParentAddr, IpSlave, row_Num) AS (select SatuanID, ParentAddr, IpSlave, (SELECT COUNT(*) FROM SatuanKawan AS t2 where ParentAddr = " + satuan.wOpsAddr.ToString() + " and t2.SatuanID <= t1.SatuanID) AS row_Num From SatuanKawan AS t1 where ParentAddr = " + satuan.wOpsAddr.ToString() + ") update SatuanKawan set IpSlave = '" + udpSlave + "' WHERE SatuanID IN (SELECT SatuanID FROM NewNames WHERE row_Num = " + j + ")";
scom.ExecuteReader();
conn.Close();
更新數據,但在執行的代碼錯誤
SQLite error
near "WITH": syntax error
當我嘗試執行在sqlite的瀏覽器查詢它的工作原理精細。
如何解決這個問題?
編輯
這是變量
WITH NewNames(SatuanID, ParentAddr, IpSlave, row_Num) AS
(SELECT SatuanID,
ParentAddr,
IpSlave,
(SELECT COUNT(*)
FROM SatuanKawan AS t2
WHERE ParentAddr = 1
AND t2.SatuanID <= t1.SatuanID) AS row_Num
FROM SatuanKawan AS t1
WHERE ParentAddr = 1)
UPDATE SatuanKawan
SET IpSlave = '192.168.1.101'
WHERE SatuanID IN
(SELECT SatuanID
FROM NewNames
WHERE row_Num = 1)
或者我用錯system.data.sqlite.dll後scom.CommandText價值?
我混淆了爲什麼這個查詢在c#中的錯誤,但工程時,我在sqlite瀏覽器中手動運行數據庫後變量。
解決
像laalto說。當我嘗試在我的應用程序中調試此版本返回3.7.10,不同的時候使用SQL瀏覽器的IM調試是版本值3.8.4.2,所以即時嘗試搜索最新版本,我發現它在http://docs.nuget.org/docs/start-here/installing-nuget和安裝包系統數據sqlite版本3.8.5在我的應用程序,它的作品。
你正在使用什麼版本的SQLite? – 2014-08-27 11:30:50
SQLite版本3,版本3.8.4.2 – Puj 2014-08-27 11:33:25
。 。你可以在*變量替換之後編輯問題並打印出'CommandText' *嗎? – 2014-08-27 11:36:01