Обновление базы данных через sql update c#
Я подключаю базу данных к winForms и вывожу через dataGridView, после чего когда изменил некоторые ячейки (мне нужно именно изменить, не добавить, и изменения могут быть не в одной строчке а в множестве сразу же), через dataset пытаюсь обновить базу данных, но она не обновляется. Я просто не знаю почему, код вроде правильный, про бывал уже по всякому. Вот код
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 System.IO;
using System.Windows.Forms.VisualStyles;
using System.Data.SqlClient;
using MySql.Data.MySqlClient;
namespace Журнал_СШ
{
public partial class Main : Form
{
DataSet dataSet;
SqlDataAdapter adapter;
string server = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Журнал;Integrated Security=True";
string sql, table;
public Main()
{
InitializeComponent();
}
// кнопка сохранения
private void Save_Click(object sender, EventArgs e)
{
// try
{
using (SqlConnection connection = new SqlConnection(server))
{
using (SqlCommand command = connection.CreateCommand())
{
connection.Open();
for (int l = 0; l < dataGridView1.Rows.Count; l++)
for (int t = 0; t < dataGridView1.Columns.Count; t++)
dataSet.Tables["Class"].Rows[l][t] = dataGridView1.Rows[l].Cells[t].Value;
for (int l = 0; l < dataGridView1.Rows.Count; l++)
for (int t = 1; t < dataGridView1.Columns.Count; t++)
{
if (t + 3 < dataSet.Tables["Class"].Columns.Count)
{
command.CommandText = "UPDATE [" + table + "] SET Дата" + t + " = @dannie WHERE id = @id";
command.Parameters.Add("@dannie", SqlDbType.Int);
command.Parameters["@dannie"].Value = dataSet.Tables["Class"].Rows[l][t + 2];
command.Parameters.Add("@id", SqlDbType.Int);
command.Parameters["@id"].Value = dataSet.Tables["Class"].Rows[l][0];
adapter.UpdateCommand = command;
adapter.Update(dataSet.Tables["Class"]);
}
}
connection.Close();
}
}
}
/* catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}*/
}
private void Load_Click(object sender, EventArgs e)
{
try
{
table = textBox1.Text;
sql = "SELECT * FROM [";
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.AllowUserToAddRows = false;
sql += table + "]";
using (SqlConnection connection = new SqlConnection(server))
{
connection.Open();
adapter = new SqlDataAdapter(sql, connection);
dataSet = new DataSet();
adapter.Fill(dataSet, "Class");
dataGridView1.DataSource = dataSet.Tables["Class"];
dataGridView1.Columns["id"].ReadOnly = true;
dataGridView1.Columns["id"].Visible = false;
dataGridView1.Columns["Группа"].ReadOnly = true;
dataGridView1.Columns["Группа"].Visible = false;
dataGridView1.Columns["Имя"].ReadOnly = true;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
Код таблицы:
[id] INT NOT NULL,
[Группа] NCHAR (10) NOT NULL,
[Имя] NCHAR (10) NOT NULL,
[Дата1] INT NULL,
[Дата2] INT NULL,
[Дата3] INT NULL,
[Дата4] INT NULL,
[Дата5] INT NULL,
[Дата6] INT NULL,
[Дата7] INT NULL,
[Дата8] INT NULL
Ответы (1 шт):
Автор решения: askurakor23
→ Ссылка
Вы можете решить это на основе данного подключения, в котором заменяются данные с помощью insert:
string max_querry = "select TOP 1 user_id
from users ORDER BY user_id DESC";
int max_id;
using (SqlConnection conn1 = new SqlConnection(ConnectionData.ConnectionString)) {
conn1.Open();
using (SqlCommand cmd1 = new SqlCommand(max_querry, conn1)) {
object result = cmd1.ExecuteScalar();
max_id = Convert.ToInt32(result);
}
}
string add_querry = "insert into users VALUES (
@uID, @uL, @uP, @uPU, @uLL, @uB, @uS)";
using (SqlConnection conn = new SqlConnection(ConnectionData.ConnectionString)) {
conn.Open();
using (SqlCommand cmd = new SqlCommand(add_querry, conn)) {
cmd.Parameters.AddWithValue("@uID", max_id+1);
cmd.Parameters.AddWithValue("@uL", TB_Login.Text);
cmd.Parameters.AddWithValue("@uP", TB_Password.Text);
cmd.Parameters.AddWithValue("@uLL", DateTime.Now.Date);
if (CB_need_upd.Checked) {
cmd.Parameters.AddWithValue("@uPU", 1);
}
else {
cmd.Parameters.AddWithValue("@uPU", 0);
}
if (CB_Administrator.Checked) {
cmd.Parameters.AddWithValue("@uS", "Администратор");
}
else {
cmd.Parameters.AddWithValue("@uS", "Пользователь");
}
if (CB_Blocked.Checked) {
cmd.Parameters.AddWithValue("@uB", 1);
}
else {
cmd.Parameters.AddWithValue("@uB", 0);
}
cmd.ExecuteNonQuery();
}
}