C# Вставить с MS Access не вставляет?

Я пытаюсь вставить новые строки в базу данных Access в C#. Код компилируется и предположительно вставляет новые данные в базу данных, но новых данных после обновления datagridview нет. Также нет новых данных о самой базе данных.

Извините, я новичок в этом, кто-то может мне помочь?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplicaction1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection connect = new OleDbConnection();
        private void Form1_Load(object sender, EventArgs e)
        {
            this.articulosTableAdapter.Fill(this.inventarioDataSet.Articulos);
        }
        private void UpdateTable()
        {
            connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kudox\Desktop\Inventario.accdb";
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            string query = "SELECT * from Articulos";
            command.CommandText = query;

            OleDbDataAdapter da = new OleDbDataAdapter(command);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            connect.Close();
        }
        private void btnInsertar_Click(object sender, EventArgs e)
        {
            connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kudox\Desktop\Inventario.accdb";
            string Nombre;
            int Cantidad, CostoPU, Importancia, CostoTO;
            try
            {
                Nombre = txtNombre.Text;
                Cantidad = int.Parse(txtCantidad.Text);
                CostoPU = int.Parse(txtCosto.Text);
                Importancia = int.Parse(cmbImportancia.SelectedItem.ToString());
                CostoTO = CostoPU * Cantidad;
                connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kudox\Desktop\Inventario.accdb";
                OleDbCommand cmd = new OleDbCommand("INSERT into Articulos(NombreArticulo, CostoPorUnidad, CantidadDeArticulos, Importancia, CostoTotal) values('"+Nombre+"','" + CostoPU +"','" + Cantidad +"','" + Importancia +"','" + CostoTO +"')");
                MessageBox.Show("Articulo agregado");
                UpdateTable();
            }
            catch(Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }
    }
}

1 ответ

Решение

После настройки источника данных вам нужно привязать данные, поэтому в вашей процедуре UpdateTable(), после dataGridView1.DataSource = dt;, добавлять:

dataGridView1.DataBind();

Что касается вашей команды вставки, вам нужно выполнить ее в какой-то момент (вероятно, сразу после OleDbCommand cmd = ... линия), что-то вроде:

cmd.ExecuteNonQuery();
Другие вопросы по тегам