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();