gpt4 book ai didi

sqlite - 如何在 Lazarus 中对 TSQLite3DataSet 应用更新

转载 作者:行者123 更新时间:2023-12-03 19:25:14 25 4
gpt4 key购买 nike

我正在尝试为 Lazarus 程序实现 TSQLite3DataSet 功能。在这里给出一个 MCVE 是一个 test.db 的 SQLite 表。数据库:

CREATE TABLE "ttest" (
"ID" INTEGER PRIMARY KEY AUTOINCREMENT,
"Data" INTEGER)

实现 TSQLite3Dataset例如我这样做了:
  object Sqlite3Dataset1: TSqlite3Dataset
FileName = 'C:\Users\User\Desktop\SQLIte\test.db'
PrimaryKey = 'ID'
TableName = 'ttest'
end

它可以很好地保存更新和附加的数据。例如使用此代码:
procedure TForm1.Button3Click(Sender: TObject);
begin
if Sqlite3Dataset1.State in [dsEdit, dsInsert] then
Sqlite3Dataset1.Post;
Sqlite3Dataset1.ApplyUpdates;
Sqlite3Dataset1.RefetchData;
end;

但是,如果我将真正的空表分配给类实例:
CREATE TABLE "base" (
"ID" INTEGER PRIMARY KEY AUTOINCREMENT,
"Code" varchar NOT NULL,
"GCode" varchar DEFAULT NULL,
"Fam" varchar DEFAULT NULL,
"Name" varchar DEFAULT NULL,
"Patr" varchar DEFAULT NULL,
"Age" smallint DEFAULT NULL,
"Gender" smallint DEFAULT NULL,
"Invalid" smallint DEFAULT NULL,
"AdmDate" date DEFAULT NULL,
"Departament" smallint DEFAULT NULL,
"DsAdm" varchar DEFAULT NULL,
"DsClin" varchar DEFAULT NULL,
"Surgery" varchar DEFAULT NULL,
"ConditAdmission" smallint DEFAULT NULL,
"DiagnRemarks" varchar DEFAULT NULL,
"DiagnDuration" float DEFAULT NULL,
"TrMethod" smallint DEFAULT NULL,
"TreatDetails" varchar DEFAULT NULL,
"DiseaseDuration" float DEFAULT NULL,
"Acute" smallint DEFAULT NULL,
"Course" varchar DEFAULT NULL,
"Outcomes" smallint DEFAULT NULL,
"GBA" smallint DEFAULT NULL,
"GUA" smallint DEFAULT NULL,
"Coag" smallint DEFAULT NULL,
"PTI" smallint DEFAULT NULL,
"Group" smallint DEFAULT NULL,
"Stool" smallint DEFAULT NULL,
"BCA" smallint DEFAULT NULL,
"GP" smallint DEFAULT NULL,
"Alb" smallint DEFAULT NULL,
"Glob" smallint DEFAULT NULL,
"Bil" smallint DEFAULT NULL,
"BilCon" smallint DEFAULT NULL,
"NonConBil" smallint DEFAULT NULL,
"Chol" smallint DEFAULT NULL,
"AST" smallint DEFAULT NULL,
"ALT" smallint DEFAULT NULL,
"AmilBl" smallint DEFAULT NULL,
"AmilUr" smallint DEFAULT NULL,
"DUr" smallint DEFAULT NULL,
"Carbamide" smallint DEFAULT NULL,
"Crea" smallint DEFAULT NULL,
"Tim" smallint DEFAULT NULL,
"Glu" smallint DEFAULT NULL,
"RW" smallint DEFAULT NULL,
"HBS" smallint DEFAULT NULL,
"X-Ray" smallint DEFAULT NULL,
"FGDS" smallint DEFAULT NULL,
"ECG" smallint DEFAULT NULL,
"Use" smallint DEFAULT NULL,
"PeptUlcerGastr" smallint DEFAULT NULL,
"PeptUlcerDuod" smallint DEFAULT NULL,
"AcUlcer" smallint DEFAULT NULL,
"Loc1" varchar DEFAULT NULL,
"Loc2" varchar DEFAULT NULL,
"Compl1" varchar DEFAULT NULL,
"Compl2" varchar DEFAULT NULL,
"Operation1" varchar DEFAULT NULL,
"Operation2" varchar DEFAULT NULL,
"ManipName" varchar DEFAULT NULL,
"Manipulation" varchar DEFAULT NULL,
"Coexist1" varchar DEFAULT NULL,
"Coexist2" varchar DEFAULT NULL,
"Coexist3" varchar DEFAULT NULL,
"Coname" varchar DEFAULT NULL,
"Coexisting" varchar DEFAULT NULL,
"Cholecyst" smallint DEFAULT NULL,
"Pancreatitis" smallint DEFAULT NULL,
"GIB" smallint DEFAULT NULL,
"Bulbitis" smallint DEFAULT NULL,
"Hepatitis" smallint DEFAULT NULL,
"Scar" smallint DEFAULT NULL,
"Gastritis" smallint DEFAULT NULL,
"Additional" smallint DEFAULT NULL,
"NameofAddit" varchar DEFAULT NULL,
"OtherName" smallint DEFAULT NULL,
"Other" varchar DEFAULT NULL,
"SocState" smallint DEFAULT NULL,
"Occupation" varchar DEFAULT NULL,
"Hazards" smallint DEFAULT NULL,
"HazardsOther" varchar DEFAULT NULL,
"SatisfGen" smallint DEFAULT NULL,
"SatisfMoral" smallint DEFAULT NULL,
"SatisfMater" smallint DEFAULT NULL,
"UseNutrit" float DEFAULT NULL,
"UseClothes" float DEFAULT NULL,
"UseCulture" float DEFAULT NULL,
"UseTreat" float DEFAULT NULL,
"UseSport" float DEFAULT NULL,
"FamCond" smallint DEFAULT NULL,
"FamRelat" smallint DEFAULT NULL,
"FamScand" smallint DEFAULT NULL,
"FamScandReas" smallint DEFAULT NULL,
"Stress" smallint DEFAULT NULL,
"RelativesCount" smallint DEFAULT NULL,
"RelativesPersons" varchar DEFAULT NULL,
"Drugs" smallint DEFAULT NULL,
"DrugsDetails" varchar DEFAULT NULL,
"DietSubj" smallint DEFAULT NULL,
"DietPlace" smallint DEFAULT NULL,
"DietPlaceOther" varchar DEFAULT NULL,
"DietDry" smallint DEFAULT NULL,
"DietRegular" smallint DEFAULT NULL,
"DietFreq" float DEFAULT NULL,
"DietChew" smallint DEFAULT NULL,
"DietObj" smallint DEFAULT NULL,
"AlcoholFam" smallint DEFAULT NULL,
"AlcoholSelf" smallint DEFAULT NULL,
"AlcoholObj" smallint DEFAULT NULL,
"AlcoholBeginAge" float DEFAULT NULL,
"AlcoholBeforeYears" float DEFAULT NULL,
"SmokeBeginAge" smallint DEFAULT NULL,
"SmokeTotalYears" smallint DEFAULT NULL,
"Smokes" smallint DEFAULT NULL,
"SmokesCigarettes" smallint DEFAULT NULL,
"ProphylPurp" smallint DEFAULT NULL,
"Recommend" smallint DEFAULT NULL,
"AcuteFreq" smallint DEFAULT NULL,
"ReasontoCome" varchar DEFAULT NULL,
"AddonA1" varchar DEFAULT NULL,
"AddonS1" smallint DEFAULT NULL,
"ExaminationOtherCount" smallint DEFAULT NULL,
"ExaminationOtherName" varchar DEFAULT NULL,
"Complications" varchar DEFAULT NULL,
"AddonA2" varchar DEFAULT NULL,
"AddonA3" varchar DEFAULT NULL,
"Surgery1" varchar DEFAULT NULL,
"Surgery2" varchar DEFAULT NULL,
"Fio" varchar DEFAULT NULL,
"Perf" smallint DEFAULT NULL,
"Penetr" smallint DEFAULT NULL,
"Malign" smallint DEFAULT NULL,
"SmokesSigarettesNumber" float DEFAULT NULL,
"Stenosis" tinyint DEFAULT NULL,
"FamScandReas0" tinyint DEFAULT NULL,
"FamScandReas1" tinyint DEFAULT NULL,
"FamScandReas2" tinyint DEFAULT NULL,
"FamScandReas3" tinyint DEFAULT NULL,
"FamScandReas4" tinyint DEFAULT NULL,
"FamScandReas5" tinyint DEFAULT NULL,
"FamScandReas6" tinyint DEFAULT NULL,
"Drugs0" tinyint DEFAULT NULL,
"Drugs1" tinyint DEFAULT NULL,
"Drugs2" tinyint DEFAULT NULL,
"Drugs3" tinyint DEFAULT NULL,
"Drugs4" tinyint DEFAULT NULL,
"PeptUlcerUnknown" smallint DEFAULT NULL)

调用 ApplyUpdates 后什么也没做.更改不会保存到数据库中——既不更新也不追加。

我被这个问题困住了。有人知道处理它的方法吗?

最佳答案

其实答案是这样的:

该表的创建方式是用引号中的字段名拼写 "" .这掩盖了有字段 Group 的事实。 , Glob (保留字)和X-Ray (包含 minus )并且这些词在查询编辑器中没有突出显示。当TSQLiteDataSet.ApplyUpdate构建从字段定义中跳过(不添加)引号的 SQL 字符串。

我将名称替换为 Grp , GlbXRay问题就结束了。

关于sqlite - 如何在 Lazarus 中对 TSQLite3DataSet 应用更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com