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
C# Can';t使用c“插入到sqlite中”;id';s不是唯一的”;但在sqlite应用程序中,它是有效的_C#_Sqlite - Fatal编程技术网

C# Can';t使用c“插入到sqlite中”;id';s不是唯一的”;但在sqlite应用程序中,它是有效的

C# Can';t使用c“插入到sqlite中”;id';s不是唯一的”;但在sqlite应用程序中,它是有效的,c#,sqlite,C#,Sqlite,我的SQL查询是 string stringSQL = "Insert into table(clientid, contractorid, driverid) values (1,1,last_insert_rowid() + 1)" ExecuteNonQuery(stringSQL) 我得到的错误是: 错误:由于约束而中止 违反(客户ID、合同ID、, driverid不是唯一的 顺便说一句,这些列是我的主键 在c#vs 2010中使用SQLite

我的SQL查询是

string stringSQL = "Insert into table(clientid, contractorid, driverid)
                    values (1,1,last_insert_rowid() + 1)"
ExecuteNonQuery(stringSQL)
我得到的错误是:

错误:由于约束而中止 违反(客户ID、合同ID、, driverid不是唯一的

顺便说一句,这些列是我的主键

在c#vs 2010中使用SQLite函数是否存在问题? Thx I从文档中提前

函数的作用是:从调用该函数的数据库连接返回最后一行插入的rowid

请注意“来自数据库连接”部分…这意味着,如果在打开此连接之前表中已经有数据,则可能会再次从0或1开始,并以冲突结束。换句话说,我不认为您可以将此作为增加行ID的常规方法

如果在打开当前数据库连接之前该表是空的,并且如果该连接是唯一将数据插入该表中的东西,那么我希望这种方法能够起作用……您可能需要测试该部分,以确保我们了解发生了什么

当然,这是假设文档是正确的-我本人从未实际使用过sqlite…

来自文档:

函数的作用是:从调用该函数的数据库连接返回最后一行插入的rowid

请注意“来自数据库连接”部分…这意味着,如果在打开此连接之前表中已经有数据,则可能会再次从0或1开始,并以冲突结束。换句话说,我不认为您可以将此作为增加行ID的常规方法

如果在打开当前数据库连接之前该表是空的,并且如果该连接是唯一将数据插入该表中的东西,那么我希望这种方法能够起作用……您可能需要测试该部分,以确保我们了解发生了什么


当然,这是假设文档是正确的-我自己从来没有实际使用过sqlite…

你的意思是说你有一个复合主键吗?所以clientid、contractorid和driverid的组合必须是唯一的?如果是这样,你可能想添加另一个无意义的id并将其作为主键。复合键可能会很麻烦e、 尝试引用或更新它们…如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”按钮(
{}
)在编辑器工具栏上,可以很好地格式化和语法突出显示它!@Marc_s在我的iPad上找不到按钮,很抱歉它太难看了。@Marc G..我不确定是否理解你的问题。我正在使用该函数获取最后一个rowid,并在添加1后将其分配给driverid。@Yaron Buki:查看常见问题解答条目(包括屏幕截图)…你的意思是说你有一个复合主键?所以clientid、contractorid和driverid的组合必须是唯一的?如果是这样,你可能想添加另一个无意义的id并将其作为主键。复合键可能会很麻烦。尝试引用或更新它们…如果你发布代码、XML或数据示例,请在文本编辑器中勾选这些行,然后单击“代码示例”按钮(
{}
)在编辑器工具栏上,可以很好地格式化和语法突出显示它!@Marc_s在我的iPad上找不到按钮,很抱歉它太难看了。@Marc G..我不确定是否理解你的问题。我正在使用该函数获取最后一个rowid,并在添加1后将其分配给driverid。@Yaron Buki:查看常见问题解答条目(包括屏幕截图)…Jon,我给人留下深刻印象。你一针见血。我测试了你的想法并“证明”了你的理论。现在我想知道如何增加驱动程序id。我不建议sqlite与我使用的其他db一起工作要困难得多。这是我用来插入的内容:Jon,我给人留下深刻印象。你一针见血。我测试了你的想法并“证明”你的理论。现在我想知道如何增加驱动程序id。我不建议sqlite,它比我使用的其他db更难使用。这是我用来插入的: