Я пытаюсь редактировать вставки в этой таблице, используя C# и sqlite.
Таблица SQLite:
CREATE TABLE "utenti" (
"id" INTEGER NOT NULL,
"grado" TEXT,
"cognome" TEXT NOT NULL,
"nome" TEXT NOT NULL,
"codice_fiscale" TEXT
)
CREATE TABLE "entrate" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"id_utente" INTEGER NOT NULL,
"nome" TEXT NOT NULL,
"entrata" TEXT NOT NULL,
"uscita" TEXT
);
Я хотел бы убедитесь, что сначала мы go проверили, есть ли запись с «id_utente», вставленная в текстовое поле. Если он существует и значение столбца «uscita» пусто, обновите строку и добавьте значение в столбец «uscita». Если в текстовом поле нет строк с «id_utente» или они существуют, но введены значения столбцов «entrata» и «uscita», вставьте новую запись.
Тестовый код:
public static bool SavePerson(int idUtente, string nome, string orario)
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
var output = cnn.Query($"select * from utenti where id = {idUtente}").FirstOrDefault();
if (output != null) {
nome = FindCognome(idUtente);
string query;
query = $"IF NOT EXISTS(SELECT (id_utente, nome, entrata) FROM entrate WHERE id_utente = '\"{idUtente}\"')" +
$"BEGIN"
$"INSERT INTO entrate (id_utente, nome, entrata) VALUES (\"{idUtente}\",\"{nome}\",\"{orario}\")" +
$"END" +
$"ELSE" +
$"BEGIN" +
$"UPDATE entrate (id_utente, nome, entrata) VALUES (\"{idUtente}\",\"{nome}\",\"{orario}\") WHERE id_utente = '\"{idUtente}\"')" +
$"END";
//cnn.Execute($"INSERT INTO entrate (id_utente, nome, entrata) VALUES (\"{idUtente}\",\"{nome}\",\"{orario}\")");
cnn.Execute(query);
cnn.Close();
return true;
}
else return false;
}
}
Я провел различные тесты и различные попытки, но я нахожусь в затруднении для контрольной переменной строки в таблице.
ДРУГОЕ НЕПРАВИЛЬНОЕ ТЕСТ
query = $"UPDATE entrate SET uscita = \"{orario}\"," +
$"CASE WHEN id_utente = {idUtente}" +
$"ELSE INSERT INTO entrate (id_utente, nome, entrata) VALUES (\"{idUtente}\",\"{nome}\",\"{orario}\")";