Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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/5/sql/86.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/6/multithreading/4.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
C# 在SQLite表中更改键的最佳方法是什么?_C#_Sql_Database_Sqlite - Fatal编程技术网

C# 在SQLite表中更改键的最佳方法是什么?

C# 在SQLite表中更改键的最佳方法是什么?,c#,sql,database,sqlite,C#,Sql,Database,Sqlite,我将分层数据存储在从SQLite数据库填充的treeview中。根据用户的操作,树节点的ID可以更改(如果在节点001之前添加新节点,则从001到末尾的所有节点的密钥都将增加1) 这证明在更新数据库时很麻烦,因为更新001的值可能会更新错误的节点,因为树中添加了一个节点 我已经找到了一个解决这个问题的方法,但对我来说这似乎很愚蠢。我只是在更新之前清除表,删除所有记录,然后重新添加它们。但是这看起来很糟糕,因为如果在添加它们的过程中出现了错误,那么将不会添加所有剩余的项 我能想到的唯一其他解决方法

我将分层数据存储在从SQLite数据库填充的treeview中。根据用户的操作,树节点的ID可以更改(如果在节点001之前添加新节点,则从001到末尾的所有节点的密钥都将增加1)

这证明在更新数据库时很麻烦,因为更新001的值可能会更新错误的节点,因为树中添加了一个节点

我已经找到了一个解决这个问题的方法,但对我来说这似乎很愚蠢。我只是在更新之前清除表,删除所有记录,然后重新添加它们。但是这看起来很糟糕,因为如果在添加它们的过程中出现了错误,那么将不会添加所有剩余的项

我能想到的唯一其他解决方法是在向树中添加节点时,我可以给新节点一个键00x(其中x是树中的节点数)。但这意味着钥匙坏了


最好的方法是什么?可能不是我现在的方式。

您可以使用单独的排序字段。据我所知,更改ID的唯一原因是更改排序-因此将排序放在其他位置


(您甚至可能会发疯,只要求顺序在特定节点的子节点中是唯一的,但在这样做之前,请仔细考虑一下您是如何使用SQL查询构建此顺序的)

仅将其附加到最后有什么大不了的吗?为什么它必须在前面还是在中间?看来你的数字除了订货外什么都没有


为什么不创建一个主键,你可以直接添加到最后,这些数字永远不会改变,所以如果你有1-10,你添加到它,新的是11。然后你可以为你拥有的列增加一部分,我假设你是专门为了订购而使用的。通过这种方式,您可以使用您所拥有的进行订购,但在更新时,您使用主键,在主键中,所有内容都必须是唯一的,并且编号在分配后不会更改

我不知道这有多糟糕,我没有看到代码。@Vache:这段代码是自然语言:)在数据库中有一个主键。不允许更改-如果需要,在树中为id/顺序使用单独的列。