【问题标题】:SQLite: near "false": syntax error...how to solve single quoate throwing errorSQLite:接近“假”:语法错误...如何解决单引号抛出错误
【发布时间】:2020-08-31 11:37:41
【问题描述】:

我在自定义构建的 ionic andorid 插件中使用 capacitor-community sqlite 和 在执行execute 查询时抛出类似near "false": syntax error 的错误,其中表列类型 是varchar。

这里是查询:

insert or replace into FormSchema (SchemaId,SchemaName,Schema,Parent,Application,ModifiedDateTime,Version,PageType,favorite,CategoryType,IsDeleted) values('cc313544-cbcf-4b63-8e79-2181f5d6a3b3','AddPopup','{"schema":{"type":"object","properties":{"favoritespanel":{"virtualKey":true,"roles":[],"type":"object","buttonEvent":"route","properties":{"favorites":{"schemaRoute":"favorites.name","addable":false,"deleteable":false,"roles":[],"query":"Favorites","type":"array","buttonEvent":"route","items":{"schemaRoute":"favorites.name","query":"Favorites","type":"object","buttonEvent":"route","properties":{"parent":{"actualName":"Parent","type":"string"},"entitytimezone":{"actualName":"EntityTimeZone","hide":true,"format":"date-time","placeholder":"EntityTimeZone","title":"EntityTimeZone","type":"string","required":false},"level":{"type":"number"},"entityid":{"actualName":"EntityID","hide":true,"placeholder":"EntityID","title":"EntityID","type":"string","required":false},"uuid":{"actualName":"UUID","type":"string"},"treeStatus":{"default":"collapsed","type":"string"},"loaded":{"type":"string"},"createdby":{"actualName":"CreatedBy","hide":true,"placeholder":"CreatedBy","title":"CreatedBy","type":"string","required":false},"modifieddatetime":{"actualName":"ModifiedDateTime","hide":true,"format":"date-time","placeholder":"ModifiedDateTime","title":"ModifiedDateTime","type":"string","required":false},"name":{"actualName":"name","hide":false,"readonly":false,"type":"string","required":false},"modifiedby":{"actualName":"ModifiedBy","hide":true,"placeholder":"ModifiedBy","title":"ModifiedBy","type":"string","required":false},"createddatetime":{"actualName":"CreatedDateTime","hide":true,"format":"date-time","placeholder":"CreatedDateTime","title":"CreatedDateTime","type":"string","required":false},"favorite":{"actualName":"favorite","view":"favorite","hide":false,"readonly":false,"type":"boolean","buttonEvent":"favorite","routeOnSelect":true,"required":false}},"routeOnSelect":true,"primary":false,"tableName":"favorites"},"routeOnSelect":true,"primary":false,"tableName":"favorites"}}},"availablereportspanel":{"virtualKey":true,"roles":[],"type":"object","buttonEvent":"route","properties":{"availablereports":{"schemaRoute":"availablereports.name","addable":false,"deleteable":false,"roles":[],"query":"AvailableReports","type":"array","buttonEvent":"route","items":{"schemaRoute":"availablereports.name","query":"AvailableReports","type":"object","buttonEvent":"route","properties":{"parent":{"actualName":"Parent","type":"string"},"entitytimezone":{"actualName":"EntityTimeZone","hide":true,"format":"date-time","placeholder":"EntityTimeZone","title":"EntityTimeZone","type":"string","required":false},"level":{"type":"number"},"entityid":{"actualName":"EntityID","hide":true,"placeholder":"EntityID","title":"EntityID","type":"string","required":false},"uuid":{"actualName":"UUID","type":"string"},"treeStatus":{"default":"collapsed","type":"string"},"loaded":{"type":"string"},"createdby":{"actualName":"CreatedBy","hide":true,"placeholder":"CreatedBy","title":"CreatedBy","type":"string","required":false},"modifieddatetime":{"actualName":"ModifiedDateTime","hide":true,"format":"date-time","placeholder":"ModifiedDateTime","title":"ModifiedDateTime","type":"string","required":false},"name":{"actualName":"name","hide":false,"readonly":false,"type":"string","required":false},"modifiedby":{"actualName":"ModifiedBy","hide":true,"placeholder":"ModifiedBy","title":"ModifiedBy","type":"string","required":false},"createddatetime":{"actualName":"CreatedDateTime","hide":true,"format":"date-time","placeholder":"CreatedDateTime","title":"CreatedDateTime","type":"string","required":false},"favorite":{"actualName":"favorite","view":"favorite","hide":false,"readonly":false,"type":"boolean","buttonEvent":"favorite","routeOnSelect":true,"required":false}},"routeOnSelect":true,"primary":false,"tableName":"favorites"},"routeOnSelect":true,"primary":false,"tableName":"favorites"}}}}},"app":"Construction","unitsOfMeasurement":"","queries":[{"sheetName":"AvailableReports","query":"select FormSchema.schemaid as entityid, FormSchema.schemaid as uuid, favorites.userid as userid, favorites.favorite as favorite, FormSchema.schemaname as name FROM FormSchema LEFT JOIN favorites ON FormSchema.schemaid = favorites.entityid where (favorites.favorite='false' OR favorites.favorite is null) and (FormSchema.isDeleted='false' or FormSchema.isDeleted='0' )and FormSchema.pagetype='param2'  and FormSchema.categorytype='param1'","property":"AvailableReports"},{"sheetName":"Favorites","query":"select schemaname as name, schemaid as entityid, favorite as favorite from formschema where favorite='true' and isDeleted='false' and pagetype='param2'  and categorytype='param1'","property":"Favorites"},{"sheetName":"Panel","query":"select pageType as entityname, schemaid as entityid, favorite as favorite,schemaname as name,categoryType as categoryType   from formschema  where (isDeleted='false' or isDeleted='0') group  by entityname","property":"DropdownQueryWithoutParams"},{"sheetName":"Panel","query":"select pageType as entityname, schemaid as entityid, favorite as favorite,schemaname as name,categoryType as categoryType  from formschema where categoryType='param1' and (isDeleted='false' or isDeleted ='0') group  by entityname","property":"DropdownQuery","queryParameter":"param1=favorites.categorytype"}],"popupHeader":{"properties":{"formType":"favorites","dropdownValue":"param2=entityname;param1=categoryType","width":"500px","save":false,"refresh":"favorites,availablereports","dropdownQueryWithoutParams":"DropdownQueryWithoutParams","title":"Category","close":true,"dropdown":true,"dropdownQuery":"DropdownQuery","height":"700px"}},"tableName":"Formschema","layout":[{"fxLayoutAlign":"flex-start","fxLayoutWrap":"wrap","justify-content":"space-between","type":"flex","items":[{"fxFlex":"0 0 calc(100%)","expanded":false,"type":"expansion-panel","title":"Favorites","collapsible":true,"items":[{"fxLayoutWrap":"wrap","fxLayoutGap":"10px","type":"flex","items":[{"listItems":0,"headerHeight":0,"type":"table","items":[{"width":"350","type":"string","key":"favoritespanel.favorites[].name"},{"width":"50","type":"favorite","key":"favoritespanel.favorites[].favorite"}],"key":"favoritespanel.favorites","rowHeight":50,"height":"500px"}],"fxLayout":"row"}],"key":"favoritespanel"},{"fxFlex":"0 0 calc(100%)","expanded":true,"type":"expansion-panel","title":"Available Items","collapsible":true,"items":[{"fxLayoutWrap":"wrap","fxLayoutGap":"10px","type":"flex","items":[{"listItems":0,"headerHeight":0,"type":"table","items":[{"width":"350","type":"string","key":"availablereportspanel.availablereports[].name"},{"width":"50","type":"favorite","key":"availablereportspanel.availablereports[].favorite"}],"key":"availablereportspanel.availablereports","rowHeight":50,"height":"500px"}],"fxLayout":"row"}],"key":"availablereportspanel"}],"fxLayout":"row"}],"categoryType":"","parentPage":"","TableName":"AddPopup","pageType":"favorites","$state":"","Version":"65","options":{"submit":false},"readDataFromOtherSource":{"favorites":{"fieldMapping":{}},"availablereports":{"fieldMapping":{}}},"page":"AddPopup","tenant":"All","breadcrumbDisplayName":""}','null','Construction','2020-08-31T03:58:54.3466667','65','favorites','false','','false');

在 sqlite db 浏览器中也一样

用于 SQLite 错误消息的 DB 浏览器:

Execution finished with errors.
Result: near "false": syntax error
At line 1:
insert or replace into FormSchema (SchemaId,SchemaName,Schema,Parent,Application,ModifiedDateTime,Version,PageType,favorite,CategoryType,IsDeleted) values('cc313544-cbcf-4b63-8e79-2181f5d6a3b3','AddPopup','{"schema":{"type":"object","properties":{"favoritespanel":{"virtualKey":true,"roles":[],"type":"object","buttonEvent":"route","properties":{"favorites":{"schemaRoute":"favorites.name","addable":false,"deleteable":false,"roles":[],"query":"Favorites","type":"array","buttonEvent":"route","items":{"schemaRoute":"favorites.name","query":"Favorites","type":"object","buttonEvent":"route","properties":{"parent":{"actualName":"Parent","type":"string"},"entitytimezone":{"actualName":"EntityTimeZone","hide":true,"format":"date-time","placeholder":"EntityTimeZone","title":"EntityTimeZone","type":"string","required":false},"level":{"type":"number"},"entityid":{"actualName":"EntityID","hide":true,"placeholder":"EntityID","title":"EntityID","type":"string","required":false},"uuid":{"actualName":"UUID","type":"string"},"treeStatus":{"default":"collapsed","type":"string"},"loaded":{"type":"string"},"createdby":{"actualName":"CreatedBy","hide":true,"placeholder":"CreatedBy","title":"CreatedBy","type":"string","required":false},"modifieddatetime":{"actualName":"ModifiedDateTime","hide":true,"format":"date-time","placeholder":"ModifiedDateTime","title":"ModifiedDateTime","type":"string","required":false},"name":{"actualName":"name","hide":false,"readonly":false,"type":"string","required":false},"modifiedby":{"actualName":"ModifiedBy","hide":true,"placeholder":"ModifiedBy","title":"ModifiedBy","type":"string","required":false},"createddatetime":{"actualName":"CreatedDateTime","hide":true,"format":"date-time","placeholder":"CreatedDateTime","title":"CreatedDateTime","type":"string","required":false},"favorite":{"actualName":"favorite","view":"favorite","hide":false,"readonly":false,"type":"boolean","buttonEvent":"favorite","routeOnSelect":true,"required":false}},"routeOnSelect":true,"primary":false,"tableName":"favorites"},"routeOnSelect":true,"primary":false,"tableName":"favorites"}}},"availablereportspanel":{"virtualKey":true,"roles":[],"type":"object","buttonEvent":"route","properties":{"availablereports":{"schemaRoute":"availablereports.name","addable":false,"deleteable":false,"roles":[],"query":"AvailableReports","type":"array","buttonEvent":"route","items":{"schemaRoute":"availablereports.name","query":"AvailableReports","type":"object","buttonEvent":"route","properties":{"parent":{"actualName":"Parent","type":"string"},"entitytimezone":{"actualName":"EntityTimeZone","hide":true,"format":"date-time","placeholder":"EntityTimeZone","title":"EntityTimeZone","type":"string","required":false},"level":{"type":"number"},"entityid":{"actualName":"EntityID","hide":true,"placeholder":"EntityID","title":"EntityID","type":"string","required":false},"uuid":{"actualName":"UUID","type":"string"},"treeStatus":{"default":"collapsed","type":"string"},"loaded":{"type":"string"},"createdby":{"actualName":"CreatedBy","hide":true,"placeholder":"CreatedBy","title":"CreatedBy","type":"string","required":false},"modifieddatetime":{"actualName":"ModifiedDateTime","hide":true,"format":"date-time","placeholder":"ModifiedDateTime","title":"ModifiedDateTime","type":"string","required":false},"name":{"actualName":"name","hide":false,"readonly":false,"type":"string","required":false},"modifiedby":{"actualName":"ModifiedBy","hide":true,"placeholder":"ModifiedBy","title":"ModifiedBy","type":"string","required":false},"createddatetime":{"actualName":"CreatedDateTime","hide":true,"format":"date-time","placeholder":"CreatedDateTime","title":"CreatedDateTime","type":"string","required":false},"favorite":{"actualName":"favorite","view":"favorite","hide":false,"readonly":false,"type":"boolean","buttonEvent":"favorite","routeOnSelect":true,"required":false}},"routeOnSelect":true,"primary":false,"tableName":"favorites"},"routeOnSelect":true,"primary":false,"tableName":"favorites"}}}}},"app":"Construction","unitsOfMeasurement":"","queries":[{"sheetName":"AvailableReports","query":"select FormSchema.schemaid as entityid, FormSchema.schemaid as uuid, favorites.userid as userid, favorites.favorite as favorite, FormSchema.schemaname as name FROM FormSchema LEFT JOIN favorites ON FormSchema.schemaid = favorites.entityid where (favorites.favorite='false

即使我添加了单斜杠和双斜杠,例如 .... where (favorites.favorite= \'false\ 和 .... where (favorites.favorite= \\'false\\,但它不起作用。

我需要在查询中做哪些修改。如何解决上述错误?

谢谢。

【问题讨论】:

  • 我相信您在使用 json insert 时遇到了困难,所以看起来您使用了错误类型的单引号,希望此链接可以帮助您stackoverflow.com/questions/40930896/…
  • 不,@greencrest ...我的表列类型是varchar ...我将查询存储为列内的字符串而不是json对象作为字符串...例如insert into table where name ='xyz'

标签: java android sqlite


【解决方案1】:

看起来'false' 是字符串文字的一部分,或者至少第一个' 终止了字符串文字。

使用'' 转义字符串文字中的单引号,例如''false''。

更好的是,使用 sql 变量并绑定文字值,这样您就不必处理字符串转义了。

【讨论】:

  • Thanks.after 用单引号手动替换单引号...它在 sqlite 浏览器中工作...但是如何在 java 中使用 sqlite 变量任何参考?
  • 取决于您使用的库。在标准的 Android SQLiteDatabase 中,ContentValues 是一种进行变量绑定的简单方法(但它不是唯一的方法,例如 execSQL() 可以接受绑定参数数组)。
  • @r08 取决于您如何构建和执行语句。
  • 我使用db.execSQL(cmd) cmd 作为参数将上述查询作为字符串传递。
  • 然后可以使用execSQL(String, Object[])重载。用 SQL 中的 ? 变量替换文字值,并为数组中的每个变量提供一个值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多