Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“是否有任何限制?”;“在哪里?”;Android上sqlite中的子句?_Android_Sqlite_Android Sqlite_Sqldelight - Fatal编程技术网

“是否有任何限制?”;“在哪里?”;Android上sqlite中的子句?

“是否有任何限制?”;“在哪里?”;Android上sqlite中的子句?,android,sqlite,android-sqlite,sqldelight,Android,Sqlite,Android Sqlite,Sqldelight,当我通过ID查询表时,有时会遇到这样的错误: Caused by android.database.sqlite.SQLiteException: variable number must be between ?1 and ?999 (Sqlite code 1 SQLITE_ERROR): , while compiling: SELECT * FROM chat_ads WHERE _id IN (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12

当我通过ID查询表时,有时会遇到这样的错误:

Caused by android.database.sqlite.SQLiteException: variable number must be between ?1 and ?999 (Sqlite code 1 SQLITE_ERROR): , 
       while compiling: SELECT * FROM chat_ads WHERE _id IN (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20,?21,?22,?23,?24,?25,?26,?27,?28,?29,?30,?31,?32,?33,?34,?35,?36,?37,?38,?39,?40,?41,?42,?43,?44,?45,?46,?47,?48,?49,?50,?51,?52,?53,?54,?55,?56,?57,?58,?59,?60,?61,?62,?63,?64,?65,?66,?67,?68,?69,?70,?71,?72,?73,?74,?75,?76,?77,?78,?79,?80,?81,?82,?83,?84,?85,?86,?87,?88,?89,?90,?91,?92,?93,?94,?95,?96,?97,?98,?99,?100,?101,?102,?103,?104,?105,?106,?107,?108,?109,?110,?111,?112,?113,?114,?115,?116,?117,?118,?119,?120,?121,?122,?123,?124,?125,?126,?127,?128,?129,?130,?131,?132,?133,?134,?135,?136,?137,?138,?139,?140,?141,?142,?143,?144,?145,?146,?147,?148,?149,?150,?151,?152,?153,?154,?155,?156,?157,?158,?159,?160,?161,?162,?163,?164,?165,?166,?167,?168,?169,?170,?171,?172,?173,?174,?175,?176,?177,?178,?179,?180,?181,?182,?183,?184,?185,?186,?187,?188,?189,?190,?191,?192,?193,?194,?195,?196,?197,?198,?199,?200,?201,?202,?203,?204,?205,?206,?207,?208,?209,?210,?211,?212,?213,?214,?215,?216,?217,?218,?219,?220,?221,?222,?223,?224,?225,?226,?227,?228,?229,?230,?231,?232,?233,?234,?235,?236,?237,?238,?239,?240,?241,?242,?243,?244,?245,?246,?247,?248,?249,?250,?251,?252,?253,?254,?255,?256,?257,?258,?259,?260,?261,?262,?263,?264,?265,?266,?267,?268,?269,?270,?271,?272,?273,?274,?275,?276,?277,?278,?279,?280,?281,?282,?283,?284,?285,?286,?287,?288,?289,?290,?291,?292,?293,?294,?295,?296,?297,?298,?299,?300,?301,?302,?303,?304,?305,?306,?307,?308,?309,?310,?311,?312,?313,?314,?315,?316,?317,?318,?319,?320,?321,?322,?323,?324,?325,?326,?327,?328,?329,?330,?331,?332,?333,?334,?335,?336,?337,?338,?339,?340,?341,?342,?343,?344,?345,?346,?347,?348,?349,?350,?351,?352,?353,?354,?355,?356,?357,?358,?359,?360,?361,?362,?363,?364,?365,?366,?367,?368,?369,?370,?371,?372,?373,?374,?375,?376,?377,?378,?379,?380,?381,?382,?383,?384,?385,?386,?387,?388,?389,?390,?391,?392,?393,?394,?395,?396,?397,?398,?399,?400,?401,?402,?403,?404,?405,?406,?407,?408,?409,?410,?411,?412,?413,?414,?415,?416,?417,?418,?419,?420,?421,?422,?423,?424,?425,?426,?427,?428,?429,?430,?431,?432,?433,?434,?435,?436,?437,?438,?439,?440,?441,?442,?443,?444,?445,?446,?447,?448,?449,?450,?451,?452,?453,?454,?455,?456,?457,?458,?459,?460,?461,?462,?463,?464,?465,?466,?467,?468,?469,?470,?471,?472,?473,?474,?475,?476,?477,?478,?479,?480,?481,?482,?483,?484,?485,?486,?487,?488,?489,?490,?491,?492,?493,?494,?495,?496,?497,?498,?499,?500,?501,?502,?503,?504,?505,?506,?507,?508,?509,?510,?511,?512,?513,?514,?515,?516,?517,?518,?519,?520,?521,?522,?523,?524,?525,?526,?527,?528,?529,?530,?531,?532,?533,?534,?535,?536,?537,?538,?539,?540,?541,?542,?543,?544,?545,?546,?547,?548,?549,?550,?551,?552,?553,?554,?555,?556,?557,?558,?559,?560,?561,?562,?563,?564,?565,?566,?567,?568,?569,?570,?571,?572,?573,?574,?575,?576,?577,?578,?579,?580,?581,?582,?583,?584,?585,?586,?587,?588,?589,?590,?591,?592,?593,?594,?595,?596,?597,?598,?599,?600,?601,?602,?603,?604,?605,?606,?607,?608,?609,?610,?611,?612,?613,?614,?615,?616,?617,?618,?619,?620,?621,?622,?623,?624,?625,?626,?627,?628,?629,?630,?631,?632,?633,?634,?635,?636,?637,?638,?639,?640,?641,?642,?643,?644,?645,?646,?647,?648,?649,?650,?651,?652,?653,?654,?655,?656,?657,?658,?659,?660,?661,?662,?663,?664,?665,?666,?667,?668,?669,?670,?671,?672,?673,?674,?675,?676,?677,?678,?679,?680,?681,?682,?683,?684,?685,?686,?687,?688,?689,?690,?691,?692,?693,?694,?695,?696,?697,?698,?699,?700,?701,?702,?703,?704,?705,?706,?707,?708,?709,?710,?711,?712,?713,?714,?715,?716,?717,?718,?719,?720,?721,?722,?723,?724,?725,?726,?727,?728,?729,?730,?731,?732,?733,?734,?735,?736,?737,?738,?739,?740,?741,?742,?743,?744,?745,?746,?747,?748,?749,?750,?751,?752,?753,?754,?755,?756,?757,?758,?759,?760,?761,?762,?763,?764,?765,?766,?767,?768,?769,?770,?771,?772,?773,?774,?775,?776,?777,?778,?779,?780,?781,?782,?783,?784,?785,?786,?787,?788,?789,?790,?791,?792,?793,?794,?795,?796,?797,?798,?799,?800,?801,?802,?803,?804,?805,?806,?807,?808,?809,?810,?811,?812,?813,?814,?815,?816,?817,?818,?819,?820,?821,?822,?823,?824,?825,?826,?827,?828,?829,?830,?831,?832,?833,?834,?835,?836,?837,?838,?839,?840,?841,?842,?843,?844,?845,?846,?847,?848,?849,?850,?851,?852,?853,?854,?855,?856,?857,?858,?859,?860,?861,?862,?863,?864,?865,?866,?867,?868,?869,?870,?871,?872,?873,?874,?875,?876,?877,?878,?879,?880,?881,?882,?883,?884,?885,?886,?887,?888,?889,?890,?891,?892,?893,?894,?895,?896,?897,?898,?899,?900,?901,?902,?903,?904,?905,?906,?907,?908,?909,?910,?911,?912,?913,?914,?915,?916,?917,?918,?919,?920,?921,?922,?923,?924,?925,?926,?927,?928,?929,?930,?931,?932,?933,?934,?935,?936,?937,?938,?939,?940,?941,?942,?943,?944,?945,?946,?947,?948,?949,?950,?951,?952,?953,?954,?955,?956,?957,?958,?959,?960,?961,?962,?963,?964,?965,?966,?967,?968,?969,?970,?971,?972,?973,?974,?975,?976,?977,?978,?979,?980,?981,?982,?983,?984,?985,?986,?987,?988,?989,?990,?991,?992,?993,?994,?995,?996,?997,?998,?999,?1000), (OS error - 11:Try again)
       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(SQLiteConnection.java)
       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement + 948(SQLiteConnection.java:948)
       at android.database.sqlite.SQLiteConnection.prepare + 559(SQLiteConnection.java:559)
       at android.database.sqlite.SQLiteSession.prepare + 603(SQLiteSession.java:603)
       at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:63)
       at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37)
       at android.database.sqlite.SQLiteDirectCursorDriver.query + 46(SQLiteDirectCursorDriver.java:46)
       at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory + 1493(SQLiteDatabase.java:1493)
       at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory + 1463(SQLiteDatabase.java:1463)
       at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.query + 161(FrameworkSQLiteDatabase.java:161)
       at com.squareup.sqldelight.android.AndroidQuery.executeQuery + 220(AndroidQuery.java:220)
       at com.squareup.sqldelight.android.AndroidQuery.executeQuery + 195(AndroidQuery.java:195)
       at com.squareup.sqldelight.android.AndroidSqliteDriver$executeQuery$2.invoke + 132(AndroidSqliteDriver.java:132)
       at com.squareup.sqldelight.android.AndroidSqliteDriver$executeQuery$2.getOwner(AndroidSqliteDriver.java:132)
       at com.squareup.sqldelight.android.AndroidSqliteDriver$executeQuery$2.invoke + 19(AndroidSqliteDriver.java:19)
       at com.squareup.sqldelight.android.AndroidSqliteDriver.execute + 114(AndroidSqliteDriver.java:114)
       at com.squareup.sqldelight.android.AndroidSqliteDriver.executeQuery + 132(AndroidSqliteDriver.java:132)
       at classifieds.yalla.data.local.presentation.ChatAdsQueriesImpl$GetChatAds.execute + 688(ChatAdsQueriesImpl.java:688)
       at com.squareup.sqldelight.Query.executeAsList + 113(Query.java:113)
似乎限制是数组中的1000个项目,而文档中的任何地方都没有说明

桌子本身

CREATE TABLE chat_ads(
    _id INTEGER NOT NULL PRIMARY KEY,
    ...
);
更新:

如果我需要按id查询1000多个项目,有什么替代解决方案?目前,这种关系是每个
chat\u ad
与许多
chat
相关,因此我只是在
chat
表中存储一个id,然后查询用户需要多少项。

状态:

单个SQL语句中主机参数的最大数目
SQLite分配空间来保存1到使用的最大主机参数数之间的所有主机参数。因此,包含主机参数(如100000000)的SQL语句需要千兆字节的存储空间。这很容易会占用主机的资源。为防止内存分配过多,主机参数号的最大值为SQLITE\u MAX\u VARIABLE\u number,默认为999

因此,您可以设置一个更高的值

状态:

单个SQL语句中主机参数的最大数目
SQLite分配空间来保存1到使用的最大主机参数数之间的所有主机参数。因此,包含主机参数(如100000000)的SQL语句需要千兆字节的存储空间。这很容易会占用主机的资源。为防止内存分配过多,主机参数号的最大值为SQLITE\u MAX\u VARIABLE\u number,默认为999


因此,您可以设置更高的值

您可以在官方SQLite文档中找到有关所有限制的信息


对于Android版本的SQLite,您不能更改此限制,因为它是在编译时配置的。您可以尝试构建自己的SQLite版本,但最简单的解决方案可能是修改查询

您可以在SQLite官方文档中找到有关所有限制的信息


对于Android版本的SQLite,您不能更改此限制,因为它是在编译时配置的。您可以尝试构建自己的SQLite版本,但最简单的解决方案可能是修改查询

这意味着您正试图在整数(\u id)内设置字符串值

请分享你的模式代码

我可以和你们分享一个类似的问题,开发人员试图用字符串更新整数值,但他们得到了相同的错误


这意味着您正试图在整数(\u id)内设置字符串值

请分享你的模式代码

我可以和你们分享一个类似的问题,开发人员试图用字符串更新整数值,但他们得到了相同的错误


不要这样认为
私有内部类GetChatAds(私有val\u id:Collection,mapper:(SqlCursor)->t):查询(GetChatAds,mapper){override fun execute():SqlCursor{val\u idIndex=createArguments(count=\u id.size,offset=1)返回driver.executeQuery(null,““从聊天广告中选择*,其中$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\return“()”返回buildString(presizeArguments(count,offset)){append((?)append(offset)for(offset+1中的值直到offset+count){append(,?)append(value)}append('))}
它在生产中运行得很好。崩溃发生在10万个案例中的1个案例中。我不这么认为
私有内部类GetChatAds(私有val\u id:Collection,mapper:(SqlCursor)->t):Query(GetChatAds,mapper){override fun execute():SqlCursor{val\u id=createArguments(count=\u id.size,offset=1)返回driver.executeQuery(null,““从聊天广告中选择*,其中$\u id中的$\u id”“,\u id.size){u id.forEachIndexed{index,\u id->bindLong(index+1,\u id)}}
protected fun createArguments(count:Int,offset:Int):String{if(count==0)return“()”返回buildString(presizeArguments(count,offset)){append((?)append(offset)for(offset+1中的值直到offset+count){append(,?)append(value)}append('))     }   }
它在生产中运行得很好。崩溃发生在10万个案例中的1个案例中。将所有这些值放在临时表中,并与
EXISTS
中的
一起使用。这是一个有趣的想法,需要最少的修改!但我愿意修改模式。将所有这些值放在临时表中,并与
EXISTS
一起使用或者
中的
。这个想法很有趣,需要最少的修改!但我愿意修改模式。