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
如何让csharp sqlite为重复项或外键约束冲突抛出异常_Sqlite - Fatal编程技术网

如何让csharp sqlite为重复项或外键约束冲突抛出异常

如何让csharp sqlite为重复项或外键约束冲突抛出异常,sqlite,Sqlite,我目前正在使用csharp sqlite。在SQLite数据库中,我有一些唯一性和外键约束。但是,当我向表中写入“副本”时,不会引发异常,我发现检查异常的唯一方法是使用以下内容: var error = sqliteCommand.GetLastError(); var sqlstring = "some insert sql"; var command = SqliteCommand(sqlstring); command.Parameters.Add(... some parameter.

我目前正在使用csharp sqlite。在SQLite数据库中,我有一些唯一性和外键约束。但是,当我向表中写入“副本”时,不会引发异常,我发现检查异常的唯一方法是使用以下内容:

var error = sqliteCommand.GetLastError();
var sqlstring = "some insert sql";
var command = SqliteCommand(sqlstring);
command.Parameters.Add(... some parameter...);

using (var sqlConnection = new SqliteConnection(connectionString))
{
     try
     {
          command.ExecuteNonQuery();
     }
     catch (Exception ex)
     {
          do something with the exception
     }
     finally
     {
          sqlConnection.Close();
     }
}
我希望能够做到以下几点:

var error = sqliteCommand.GetLastError();
var sqlstring = "some insert sql";
var command = SqliteCommand(sqlstring);
command.Parameters.Add(... some parameter...);

using (var sqlConnection = new SqliteConnection(connectionString))
{
     try
     {
          command.ExecuteNonQuery();
     }
     catch (Exception ex)
     {
          do something with the exception
     }
     finally
     {
          sqlConnection.Close();
     }
}
“catch”块永远不会被击中,即使

var error = sqliteCommand.GetLastError();

确实返回了我所期望的错误的描述。是否有人知道如何解决这个问题,或者使用csharp sqlite库的标准做法是什么?

是否启用了外键?是的,外键已启用。“PRAGMA foreign_keys=ON;”但我还有一个唯一性约束,在测试用例中被违反,并且没有引发异常,但sqlitecommand.GetLastError()确实返回类似“列用户名不唯一”的内容。