Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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

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
列计数更改时向SQLite表插入数据的动态方法_Sql_Sqlite - Fatal编程技术网

列计数更改时向SQLite表插入数据的动态方法

列计数更改时向SQLite表插入数据的动态方法,sql,sqlite,Sql,Sqlite,我正在使用SQLite编写一个脚本,在这个脚本中,可以插入到我创建的表中的列的数量会发生变化,以便以后进行连接 我创建这个表是为了将数据插入其中,它有97列,从我的提要中输入的数据可以从大约80列一直到第97列 我得到的错误是SQLITE\u错误:表allPositionsTable有97列,但提供了80个值,这是我试图通过找出一种不发生这种情况的方法来避免的错误 我是否可以使用任何变通方法或技巧使SQLite函数始终包含没有数据的列,或者动态地不包含这些列,从而消除错误 我得到的错误是SQLI

我正在使用SQLite编写一个脚本,在这个脚本中,可以插入到我创建的表中的列的数量会发生变化,以便以后进行连接

我创建这个表是为了将数据插入其中,它有97列,从我的提要中输入的数据可以从大约80列一直到第97列

我得到的错误是
SQLITE\u错误:表allPositionsTable有97列,但提供了80个值
,这是我试图通过找出一种不发生这种情况的方法来避免的错误

我是否可以使用任何变通方法或技巧使SQLite函数始终包含没有数据的列,或者动态地不包含这些列,从而消除错误

我得到的错误是
SQLITE\u错误:表allPositionsTable有97
列,但提供了80个值
,这是我正在尝试的 通过找出一种不会发生这种情况的方法来避免

这是因为您使用的是默认列列表(即,不指定要将值放入其中的列)

也就是说,您将编写相当于
INSERT的代码,插入到您的表值中(….
因此,在没有列列表的情况下,您的意思是,您将为表中的所有列提供一个值,从而在一个或多个值不存在时提供消息

您要做的是使用
插入到您的\u表\u名称(要插入的\u列的\u逗号\u分隔\u列表)值(……。

  • 其中插入的列的表名和逗号分隔列表将替换为适当的值
请参阅插入语法中突出显示的部分,该部分位于

上述链接的相应部分为:-

第一个表单(带有“VALUES”关键字)创建一个或多个新表单 现有表中的行

如果表名后的列名列表为 省略,则插入到每行中的值的数量必须为 与表中的列数相同

在这种情况下 从值列表的每个项计算最左边的表达式 插入到每一新行最左边的列中,依此类推 对于每个后续表达式

如果指定了列名列表, 然后,值列表中每个项中的值数必须匹配 指定列的数目

新字段的每个命名列 行中填充了对相应的 值表达式

表中未显示在列列表中的列 使用默认列值(指定为 CREATETABLE语句),如果没有默认值,则使用NULL 指定的


如果您只在一行中插入80个值,则只插入这80列而不是97列(并确保您要忽略的列可以有空值)@Shawn那么如果有额外的列会发生什么呢?因为我无法预测列的数量。问题是:我不知道你想从中得到什么,但不知道,我认为你不知道如何使用insert指定列。如果你有一个表,比如说,有三列
a
b
c
,并且要插入一行,其中的值仅为列
a
c
所知,您可以执行类似于
insert INTO mytable(a,c)values('a value','c value')的操作
b
,被忽略,被赋值为空。这是您需要做的事情。这不是您所问的,但应该注意的是,在一个格式良好、正确规范化的数据库中,表示任何类型的真实数据,几乎不可能合法地需要一个包含97列的表。什么数据是空的他的桌子应该放东西吗?