Я создал таблицу «pracownicy» (в переводе с польского - «Рабочие»).Сначала я загружаю все данные из базы данных:
connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password=");
adapter = new MySqlDataAdapter("SELECT * FROM eltechnik_projekt1.pracownicy", connection);
ds = new DataSet();
adapter.Fill(ds, "pracownicy");
dataGridView1.DataSource = ds.Tables["pracownicy"];
Затем я могу отредактировать любое значение ячейки в этой таблице на событии CellOnEdit и работает нормально:
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
using (connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password="))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.CommandText = @"UPDATE eltechnik_projekt1.pracownicy SET IMIE = @IMIE, NAZWISKO = @NAZWISKO, GRUPA_PRACOWNIKOW = @GRUPA_PRACOWNIKOW, STANOWISKO = @STANOWISKO, NUMER_KARTY = @NUMER_KARTY WHERE ID_PRACOWNIKA = @ID_PRACOWNIKA";
cmd.Parameters.Add("@IMIE", MySqlDbType.VarChar, 50, "IMIE");
cmd.Parameters.Add("@NAZWISKO", MySqlDbType.VarChar, 50, "NAZWISKO");
cmd.Parameters.Add("@GRUPA_PRACOWNIKOW", MySqlDbType.VarChar, 50, "GRUPA_PRACOWNIKOW");
cmd.Parameters.Add("@STANOWISKO", MySqlDbType.VarChar, 50, "STANOWISKO");
cmd.Parameters.Add("@NUMER_KARTY", MySqlDbType.VarChar, 50, "NUMER_KARTY");
MySqlParameter param = cmd.Parameters.Add("@ID_PRACOWNIKA", MySqlDbType.Int64, 10, "ID_PRACOWNIKA");
param.SourceVersion = DataRowVersion.Original;
cmd.Connection = connection;
using (MySqlDataAdapter da = new MySqlDataAdapter())
{
da.UpdateCommand = cmd;
da.InsertCommand = cmd;
da.Update(ds.Tables["pracownicy"]);
}
}
}
}
Далее я бы хотелвставить новую строку и обновить в базе данных с помощью строк Добавлено событие:
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
using (connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password="))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.CommandText = @"INSERT INTO eltechnik_projekt1.pracownicy(IMIE, NAZWISKO, GRUPA_PRACOWNIKOW, STANOWISKO, NUMER_KARTY) VALUES(@IMIE, @NAZWISKO, @GRUPA_PRACOWNIKOW, @STANOWISKO, @NUMER_KARTY);";
cmd.Parameters.Add("@IMIE", MySqlDbType.VarChar, 50, "IMIE");
cmd.Parameters.Add("@NAZWISKO", MySqlDbType.VarChar, 50, "NAZWISKO");
cmd.Parameters.Add("@GRUPA_PRACOWNIKOW", MySqlDbType.VarChar, 50, "GRUPA_PRACOWNIKOW");
cmd.Parameters.Add("@STANOWISKO", MySqlDbType.VarChar, 50, "STANOWISKO");
cmd.Parameters.Add("@NUMER_KARTY", MySqlDbType.VarChar, 50, "NUMER_KARTY");
MySqlParameter param = cmd.Parameters.Add("@ID_PRACOWNIKA", MySqlDbType.Int64, 99, "ID_PRACOWNIKA");
param.SourceVersion = DataRowVersion.Original;
cmd.Connection = connection;
using (MySqlDataAdapter da = new MySqlDataAdapter())
{
da.InsertCommand = cmd;
da.UpdateCommand = cmd;
da.Update(ds.Tables["pracownicy"]);
}
}
}
}
Я запускаю это приложение, и оно показывает эту таблицу:
затем я вставляю новые значения строки:
Я вставил новое, но после запуска этого приложения эта таблица возвращает только значение строки FIRST из базы данных:
это еще не окончательный код NewTables.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 MySql.Data.MySqlClient;
using System.Collections;
namespace KontrolaBazaDanych
{
public partial class New_Tables : Form
{
public New_Tables()
{
InitializeComponent();
}
ComboBox combo, combo2;
MySqlConnection connection;
MySqlDataAdapter adapter, adapter2, adapter3, adapter4;
DataSet ds, ds2, ds3, ds4;
DataTable dt, dt1;
{
try
{
connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password=");
adapter = new MySqlDataAdapter("SELECT * FROM projekt1.pracownicy", connection);
connection.Open();
ds = new DataSet();
adapter.Fill(ds, "pracownicy");
dataGridView1.DataSource = ds.Tables["pracownicy"];
dataGridView1.Columns[0].Visible = false;
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
using (connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password="))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.CommandText = @"UPDATE projekt1.pracownicy SET IMIE = @IMIE, NAZWISKO = @NAZWISKO, GRUPA_PRACOWNIKOW = @GRUPA_PRACOWNIKOW, STANOWISKO = @STANOWISKO, NUMER_KARTY = @NUMER_KARTY WHERE ID_PRACOWNIKA = @ID_PRACOWNIKA";
cmd.Parameters.Add("@IMIE", MySqlDbType.VarChar, 50, "IMIE");
cmd.Parameters.Add("@NAZWISKO", MySqlDbType.VarChar, 50, "NAZWISKO");
cmd.Parameters.Add("@GRUPA_PRACOWNIKOW", MySqlDbType.VarChar, 50, "GRUPA_PRACOWNIKOW");
cmd.Parameters.Add("@STANOWISKO", MySqlDbType.VarChar, 50, "STANOWISKO");
cmd.Parameters.Add("@NUMER_KARTY", MySqlDbType.VarChar, 50, "NUMER_KARTY");
MySqlParameter param = cmd.Parameters.Add("@ID_PRACOWNIKA", MySqlDbType.Int64, 10, "ID_PRACOWNIKA");
param.SourceVersion = DataRowVersion.Original;
cmd.Connection = connection;
using (MySqlDataAdapter da = new MySqlDataAdapter())
{
da.UpdateCommand = cmd;
da.InsertCommand = cmd;
da.Update(ds.Tables["pracownicy"]);
}
}
}
}
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
using (connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password="))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.CommandText = @"INSERT INTO projekt1.pracownicy(IMIE, NAZWISKO, GRUPA_PRACOWNIKOW, STANOWISKO, NUMER_KARTY) VALUES(@IMIE, @NAZWISKO, @GRUPA_PRACOWNIKOW, @STANOWISKO, @NUMER_KARTY);";
cmd.Parameters.Add("@IMIE", MySqlDbType.VarChar, 50, "IMIE");
cmd.Parameters.Add("@NAZWISKO", MySqlDbType.VarChar, 50, "NAZWISKO");
cmd.Parameters.Add("@GRUPA_PRACOWNIKOW", MySqlDbType.VarChar, 50, "GRUPA_PRACOWNIKOW");
cmd.Parameters.Add("@STANOWISKO", MySqlDbType.VarChar, 50, "STANOWISKO");
cmd.Parameters.Add("@NUMER_KARTY", MySqlDbType.VarChar, 50, "NUMER_KARTY");
MySqlParameter param = cmd.Parameters.Add("@ID_PRACOWNIKA", MySqlDbType.Int64, 99, "ID_PRACOWNIKA");
param.SourceVersion = DataRowVersion.Original;
cmd.Connection = connection;
using (MySqlDataAdapter da = new MySqlDataAdapter())
{
da.InsertCommand = cmd;
da.UpdateCommand = cmd;
da.Update(ds.Tables["pracownicy"]);
}
}
}
}
}
}
Я переведу значения столбцов с польского на английский:
ID_PRACOWNIKA = WORKERS_ID
IMIE = FIRST NAME
NAZWISKO = LAST NAME
GRUPA_PRACOWNIKOW = WORKERS_GROUP
STANOWISKO = POSITION
NUMER_KARTY = CARD_NUMBER
столбцы sql в таблице "Pracownicy" из базы данных:
ID_PRACOWNIKA INT
IMIE VARCHAR
NAZWISKO VARCHAR
GRUPA_PRACOWNIKOW VARCHAR
STANOWISKO VARCHAR
NUMER_KARTY VARCHAR
Кто-то знает, как решить, что вставленный один сохраняет в базу данных, чем после добавления строки возвращает только первое значение.Я искал в Google, но понятия не имею, в чем причина.Может быть, я что-то упустил.