当值已经存在时,如何处理SQLite Unique Constraints错误?

lzfw57am  于 2023-04-21  发布在  SQLite
关注(0)|答案(1)|浏览(147)

已经创建了一个数据库,并使用唯一约束来避免重复值。当我尝试添加违反该规则的值时,应用程序崩溃。
你会怎么解决呢?我应该先做一个SQL查询,看看值是否已经存在,如果不存在就添加它吗?对数据库有两个问题是不是有点不必要,我可以一个查询吗?
我想要:
1.检查值是否存在
1.如果它存在,给予一个消息,说明它已经存在
1.如果它不存在,添加它,我应该怎么做?
使用Nuget包:System.Data.SQLiteLogin
C#代码

// Connection String
    string DbFile = @"URI=file:Data\LearnWords.db";
    int status = 0;
    
    // Db Connection
    SQLiteConnection DbConnectiom = new SQLiteConnection(DbFile);
    DbConnectiom.Open();
    
    // SQL Command
    SQLiteCommand Cmd = new SQLiteCommand("INSERT INTO Word (WordClass, WordEng) VALUES('Test','Hello');", DbConnectiom);
    status = Cmd.ExecuteNonQuery();
    Console.WriteLine($"Status: {status}");
    
    DbConnectiom.Close();

尝试查找一些文档,但找不到

0kjbasz6

0kjbasz61#

你可以使用try/catch,但是你需要确保这个问题是一个唯一的约束冲突,所以你需要extended result code

DbConnectiom.SetExtendedResultCodes(true);

然后你可以有一个try/catch来检查SQLiteErrorCode.Constraint_Unique,像这样...

try
{
    status = Cmd.ExecuteNonQuery();
    Console.WriteLine($"Status: {status}");
}
catch (SQLiteException se)
{
    if (se.ResultCode != SQLiteErrorCode.Constraint_Unique)
        throw;

    Console.WriteLine("Unique constraint violated - value already exists");
}

相关问题