Как сохранять Id combobox, соединенного в sql в c#?

Оказывается, что я хочу сохранять данные, которых я хочу наполнить внутри Учеников, и у меня есть combobox, который они появляются у меня имя бегов, которые я считаю сохраняемыми в SQL. Я хочу сохранять IdCarrera, но не сохраняют я. Как способствовать тому, чтобы сохраняла эта, Пойдите, когда я выбираю бег в combobox? P.d: operacionescarreras.cs - книжный магазин класса. P.d: llenaritems - тот, которого наполняет combobox с именами бегов P.d: В SQL сохраняют все добро, за исключением IdCarrera, что, как я упомянул наверху, я хочу сохранять IdCarrera, всякий раз когда в combobox они показали себе имя бегов.

operacionescarreras.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;

namespace BaseCarreras
{
    public class operacionescarreras
    {
        SqlConnection cnn;
        SqlCommand cmd;
        SqlDataReader dr;
        // Método para insertar
        public Boolean Insertar(int id, String NombreCarrera, int Duracion)
        {

            Boolean Resultado = true;
            try
            {

                //Objeto  para crear la conexión  a la base de datos
                SqlConnection conn = new SqlConnection("Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True");
                // Abre la conexión a la base de datos.
                conn.Open();
                //El string que contiene la  consulta que se desea realizar en el SQL
                String Query = @"insert INTO Carrera " +
                 "(IdCarrera, NombreCarrera, Duracion) " +
                "VALUES(@Id, @NomC, @D)";
                // el objeto sqlCommand  guarda la consulta y la conexion donde se va  a ejecutar
                SqlCommand comand = new SqlCommand(Query, conn);
                // Se establece el valor de los parametros que se pusieron en el Query
                comand.Parameters.AddWithValue("@Id", id);
                comand.Parameters.AddWithValue("@NomC", NombreCarrera);
                comand.Parameters.AddWithValue("@D", Duracion);
                //instruccion que ejectura la instruccion Query
                comand.ExecuteNonQuery();
                //cierra la conexión
                conn.Close();

            }
            catch (Exception c) { Resultado = false; }
            return Resultado;
        }
        //Método para consultar
        public DataTable Consultar(Int32 ID)
        {
            DataTable tabla = new DataTable();
            try
            {

                String Query = "";
                SqlConnection conn = new SqlConnection("Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True");

                conn.Open();
                if (ID != 0)
                {
                    Query = "Select * from Carrera where IdCarrera = " + ID;
                }
                else
                {
                    Query = "Select * from Carrera";
                }

                SqlCommand comand = new SqlCommand(Query, conn);
                //Execute Reader devuelve una tabla simiar a la que aparece en SQL Server.
                // E esta instruccion carga la tabla de datos "tabla" con la tabla del SQL server
                tabla.Load(comand.ExecuteReader());
                conn.Close();
            }
            catch (Exception x)
            {

            }

            return tabla;
        }
        //Método  para Elminar
        public Boolean Eliminar(Int32 id)
        {
            Boolean Resultado = true;
            try
            {
                SqlConnection conn = new SqlConnection("Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True");

                conn.Open();
                String Query = "Delete from Carrera where IdCarrera = @Id";
                SqlCommand comand = new SqlCommand(Query, conn);
                comand.Parameters.AddWithValue("@Id", id);
                comand.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception c) { Resultado = false; }
            return Resultado;
        }
        //Métodp para Actualizar
        public Boolean Actualizar(int id, String NombreCarrera, int Duracion)
        {

            Boolean Resultado = true;
            try
            {


                SqlConnection conn = new SqlConnection("Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True");

                conn.Open();
                String Query = @"Update Carrera SET   NombreCarrera= @NomC, Duracion=@D  where IdCarrera = " + id;

                SqlCommand comand = new SqlCommand(Query, conn);
                comand.Parameters.AddWithValue("@Id", id);
                comand.Parameters.AddWithValue("@NomC", NombreCarrera);
                comand.Parameters.AddWithValue("@D", Duracion);
                comand.ExecuteNonQuery();
                conn.Close();

            }
            catch (Exception c) { Resultado = false; }
            return Resultado;

        }

       public void llenarItems(ComboBox cb)
        {
            try
            {
                cnn = new SqlConnection("Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True");
                cnn.Open();
                cmd = new SqlCommand("Select IdCarrera,(NombreCarrera) as NombreCarrera from Carrera", cnn);
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    cb.Items.Add(dr["NombreCarrera"].ToString());
                }
                cb.SelectedIndex = 0;

                dr.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show("No se lleno el ComboBox: " + ex.ToString());
            }
        }

    }
}

Alumnos.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BaseMaterias;
using BaseCarreras;
using BaseAlumnos;

namespace base_de_datos_alumnos
{
    public partial class Alumnos : Form
    {
        public Alumnos()
        {
            InitializeComponent();
        }

        operacionesalumnos opa = new operacionesalumnos();

        private void buttonCerrar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void dateTimePickerNacimiento_ValueChanged(object sender, EventArgs e)
        {
            textBox1.Text = (DateTime.Today.AddTicks(-dateTimePickerNacimiento.Value.Ticks).Year - 1).ToString();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void cbMaterias_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void Alumnos_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'alumnosDataSet.Carrera' Puede moverla o quitarla según sea necesario.
            operacionesmaterias opmat = new operacionesmaterias();
            opmat.llenarItems(cbMaterias);
            operacionescarreras opcar = new operacionescarreras();
            opcar.llenarItems(cbCarreras);
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void buttonGuardar_Click(object sender, EventArgs e)
        {
            string sex;
            if (rdH.Checked)
            {
                sex = "Hombre";
            }
            else { sex = "Mujer"; }
            if (opa.Insertar(Convert.ToInt32(textBoxNoControl.Text), Convert.ToInt32(cbCarreras.SelectedValue), textBoxNombre.Text, sex,Convert.ToString(dateTimePickerNacimiento.Text)))
            {
                MessageBox.Show("Datos almacenados con exito");
            }
            else
            {
                MessageBox.Show("Error al intentar guardar los datos");
            }
        }

        private void cbCarreras_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnModficar_Click(object sender, EventArgs e)
        {

        }
    }
}
0
задан 29.04.2019, 02:20
1 ответ

Для того, чтобы оно функционировало SelectedValue combobox, ты был бы должен менять осуществление llenarItems(), если ты определяешь свойства ValueMember, и DisplayMember

public void llenarItems(ComboBox cb)
{
    DataTable dt = new DataTable();

    string connstring = "Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True";
    using(SqlConnection cnn = new SqlConnection(connstring))
    {
        cnn.Open();

        string query = "Select IdCarrera, NombreCarrera from Carrera";
        SqlCommand cmd = new SqlCommand(query, cnn);

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
    }

    cb.ValueMember = "IdCarrera";
    cb.DisplayMember = "NombreCarrera";
    cb.DataSource = dt;

    cb.SelectedIndex = 0;
}

Также он не рекомендовал бы, чтобы ты запрограммировал, таким образом, это не хорошо перемещать контроль UI над классом, который соглашается на данные, идея состоит в том, чтобы возвращать результат query db

public DataTable ObtenerTodas()
{
    DataTable dt = new DataTable();

    string connstring = "Data Source=TETUI;Initial Catalog=Alumnos;Integrated Security=True";
    using(SqlConnection cnn = new SqlConnection(connstring))
    {
        cnn.Open();

        string query = "Select IdCarrera, NombreCarrera from Carrera";
        SqlCommand cmd = new SqlCommand(query, cnn);

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
    }

    return dt;

}

Потом в form ты соглашаешься на данные и распределяешь контроль

private void Alumnos_Load(object sender, EventArgs e)
{
    operacionescarreras opcar = new operacionescarreras();
    var dt = opcar.ObtenerTodas();

    cbCarreras.ValueMember = "IdCarrera";
    cbCarreras.DisplayMember = "NombreCarrera";
    cbCarreras.DataSource = dt;

    cbCarreras.SelectedIndex = 0;
}
1
ответ дан 02.12.2019, 03:20