Как я могу получить всю строку в SQLite? C# - PullRequest
0 голосов
/ 20 января 2020

Для этого примера у меня есть база данных SQlite с таблицей Shop. Это выглядит так:

enter image description here

(идентификатор на самом деле 1234567890, я исправил его после того, как изображение было снято))

Сейчас В моем коде есть класс Item, который имеет те же свойства, что и столбцы в моей базе данных (ID, имя, цена и т. Д. c). Теперь это мой текущий код для извлечения чего-либо из моей базы данных:

public List<string> GetDBData(string SQLCommand)
    {
        List<string> output = new List<string>();

        try
        {
            m_dbConnection.Open();
            SQLiteDataReader sqlite_datareader;
            SQLiteCommand sqlite_cmd;
            sqlite_cmd = m_dbConnection.CreateCommand();
            sqlite_cmd.CommandText = SQLCommand;

            sqlite_datareader = sqlite_cmd.ExecuteReader();

            Console.WriteLine($"Command: {SQLCommand}");

            while (sqlite_datareader.Read())
            {
                int i = 0;
                while (true)
                {
                    try
                    {
                        string temp = "";

                        try
                        {
                            temp = sqlite_datareader.GetString(i).ToString();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                            try
                            {
                                temp = sqlite_datareader.GetInt32(i).ToString();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message);
                                break;
                            }
                        }

                        output.Add(temp);
                        i++;
                    }
                    catch (Exception)
                    {
                        break;
                    }
                }
            }
            m_dbConnection.Close();
        }
        catch (Exception e)
        {
            output = new List<string>();
            output.Add("I'm sorry, I can't read from the database");
            Console.WriteLine(e.Message);
            m_dbConnection.Close();
        }

        return output;
    }

Поэтому, когда мой запрос SELECT * FROM Shop WHERE ServerID = 1234567890, я получаю этот список:

enter image description here

Я знаю, что метод GetDBData () - не очень хорош, но до сих пор он мне нужен только для единичных запросов, например «Выбор имени из таблицы, где ServerID = ID».

Но теперь я начинаю нуждаться в возможности создавать объекты со значениями базы данных, поэтому в конце мне нужно, чтобы список выглядел по крайней мере так:

testList Count = 1:
  1: "ID:1|Name:TestItem|Price:1|Command:|RankRequired:|ServerId:1234567890"

Так что я могу преобразовать его в Предмет позже. Но, как вы можете видеть, я даже не получаю каждую запись в списке. Только первые два, пока не будет нулевого значения. Я мог бы добавить оператор if, чтобы проверить, является ли текущее поле пустым, но код уже слишком уродлив. Но я не знаю лучшего способа, чем трик-трик в трик-трик в трик-пойм.

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