Установка имени игрока из поля со списком, а затем показать статистику в текстовом поле из другой таблицы - PullRequest
0 голосов
/ 23 мая 2019

Я делаю приложение Windows Form в C #, используя базу данных SQlite. У меня есть выпадающий список, в который входят имена игроков, взятые из таблицы с именем «Игрок» . Я хочу показать конкретную статистику выбранного игрока из combo box в textbox, но эта статистика находится в другой таблице с именем "Player_Attributes". Обе таблицы содержат идентификатор игрока, общий для обеих таблиц.

Возможно ли, чтобы кто-то показал мне, как это можно сделать? Заранее спасибо.

Я отображаю данные ComboBox следующим образом:

 private void Form1_Load(object sender, EventArgs e)
        {
            string filename = @"C:\Users\nicho\Documents\nicholas2ndyearproject\database.sqlite";
            string sql = "select * from Player";
            var conn = new SQLiteConnection("Data Source=" + filename + ";Version=3;");
            try
            {
                conn.Open();
                DataSet ds = new DataSet();
                var da = new SQLiteDataAdapter(sql, conn);
                da.Fill(ds);
                playersListBox.DataSource = ds.Tables[0];
                playersListBox.DisplayMember = "player_name";
            }
            catch (Exception)
            {
                throw;
            }
        }

private void playersListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string ID = playersListBox.SelectedValue.ToString();
        }

Раскрывающийся код

private void playersListBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            string filename = @"C:\Users\nicho\Documents\nicholas2ndyearproject\database.sqlite";
            var conn = new SQLiteConnection("Data Source=" + filename + ";Version=3;");
            {
                using (SQLiteCommand cmd = new SQLiteCommand("SELECT player_name, Player_Attributes.sprint_speed FROM Player JOIN Player_Attributes ON Player.player_api_id = Player_Attributes.player_api_id;"))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = conn;
                    conn.Open();
                    cmd.Parameters.AddWithValue("@player_api_id", playersListBox.SelectedValue);
                    SQLiteDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        txtRating.Text = reader["rating"].ToString();
                    }
                    conn.Close();
                }
            }
        }
        catch (Exception)
        {
            throw;
        }
    }

1 Ответ

0 голосов
/ 24 мая 2019

Вам нужно знать SQL JOIN для этого оператора, для объединения требуется один и тот же столбец как минимум в 2 таблицах и использовать, как показано ниже:

SELECT  (column name which are you want)
FROM Player JOIN Player_Attributes
ON players.player.id= Player_Attributes.Player.id  

Считать эти значения с помощью sqldatareader и сохранить их в любой коллекции, например, массив, массив, список.

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