Добавить ссылочное имя вместо идентификатора из списка - PullRequest
0 голосов
/ 27 июня 2019

У меня есть 2 таблицы. Первая содержит столбец (categoryID), который является внешним ключом для categoryID во второй таблице. Вторая таблица имеет 2 столбца (categoryID, categoryName). После небольшого труда я отобразил в поле со списком categoryName вместо categoryID. Но теперь, когда я хочу выбрать из существующего categoryName, которое уже создано (отображается в выпадающем списке в выпадающем списке), это невозможно, потому что я должен ввести там int, а не строковый формат. Я новичок в программировании

con.Open();
        string cmddt = "insert into wallettbl(sum, date, categoryID, type)   
        values ('" + textBox1.Text + "','" + textBox2.Text + "','" + 
        comboBox1.Text + "', '" + type + "')";

        SqlCommand com = new SqlCommand(cmddt, con);
        com.ExecuteNonQuery();

Как написать код, если я хочу добавить строку (из выпадающего списка) вместо int, но в первую таблицу будет добавлен categoryID, который ссылается на categoryName.
РЕДАКТИРОВАТЬ: добавлен код для combobox

 con.Open();
                string cmddt = "select categoryNAME from categoryTbl";
                SqlCommand com = new SqlCommand(cmddt, con);
                SqlDataAdapter da = new SqlDataAdapter(cmddt, con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                com.ExecuteNonQuery();
                con.Close();

1 Ответ

0 голосов
/ 27 июня 2019

измените запрос для загрузки категорий, как показано ниже:

string cmddt = "select categoryID, categoryNAME from categoryTbl";

Установите источник данных для comboBox1, как показано ниже:

comboBox1.DataSource = dt;
comboBox1.DisplayMember = "categoryNAME";
comboBox1.ValueMember = "categoryID";

и, наконец, измените код для вставки данных в кошелек.следующим образом:

string cmddt=
            @"INSERT INTO WALLETTBL(sum, date, categoryID, type)   
    VALUES (@Sum, @Date, @CategoryId, @Type);";

         using (SqlConnection conn = new SqlConnection(ConnectionString))
         {
            using (SqlCommand cmd = new SqlCommand(insertQuery, conn))
            {
               cmd.Parameters.Add("@Sum", SqlDbType.Int).Value = textBox1.Text;
               cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = textBox2.Text;
               cmd.Parameters.Add("@CategoryId", SqlDbType.Int).Value =  Convert.ToInt32(comboBox1.SelectedValue);
               cmd.Parameters.Add("@Type", SqlDbType.Varchar).Value = type;
               await conn.OpenAsync();
               await cmd.ExecuteNonQueryAsync();
            }
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...