Автоматический оператор if с условием последовательности в sql - PullRequest
0 голосов
/ 20 марта 2019

У меня есть база данных "undangundang.db". Я хочу, чтобы в имени файла было слово 2019, затем folder_id = 2, если 2018, то folder_id = 3 и т. Д. (Последовательно с 2019 по 1945 год с folder_id от 2 до 76).

Как это проверить, например, у меня есть имя файла: UU No 01 Th 2016 - Penjaminan, затем folder_id = 5?

Код:

SQLiteConnection objConnUpdate = new SQLiteConnection("uuthemis.db");
    var increment = 1;

                    var currentFile = 2019;
                        var currentFolder = 2;
                        var minFile = 1945;

                        while (minFile <= currentFile)
                        {
                            currentFile -= increment;
                            currentFolder += increment;
                        }
                        if(currentFile <= minFile)
                        {
                            string update = @"INSERT INTO undangundang (uu_id, folder_id, identifier, filename, folder_parent_id) SELECT null, " + currentFolder + ",'" + itemDetail.Judul.Split('-')[0].TrimEnd() + "'," +
                    "'" + itemDetail.File + "',2 WHERE not exists (select uu_id and folder_id and identifier and filename and folder_parent_id FROM undangundang where uu_id=null and folder_id=" + currentFolder +
                    " and identifier='" + itemDetail.Judul.Split('-')[0].TrimEnd() + "' and filename ='" + itemDetail.File + "' and folder_parent_id=2)";
                    var updateQuery = objConnUpdate.Prepare(update);
                            var updateQuery = objConnUpdate.Prepare(update);
                            updateQuery.Step();
                        }

У меня проблема, которая всегда вводит folder_id = 77. Как с этим справиться?

1 Ответ

0 голосов
/ 20 марта 2019

Ваша проблема в том, что ваш цикл:

var increment = 1;
var currentFile = 2019;
var currentFolder = 2;
var minFile = 1945;

while (minFile <= currentFile)
{
    currentFile -= increment;
    currentFolder += increment;
}

просто повторяет currentFile с 2019 по 1944 год и ничего не проверяет (однако в комментариях вы отметили, что вы проверяете itemDetail.Judul.Contains(currentFolder.ToString()))

Один из способов найти folderId заключается в следующем:

var filename = "UU No 01 Th 2016 - Penjaminan";
var folderId = 2;

// note: <folderId> = 2021 - <year>
//       <year>     = 2021 - <folderId>
while (!filename.Contains($"{2021 - folderId}") && folderId < 76)
    folderId++;

// your SQL INSERT magic goes here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...