Я практикую свои C# навыки программирования, я относительно новичок, я пытаюсь создать программное обеспечение, которое поможет моему отцу следить за его документом, у меня все хорошо, но я столкнулся с этой проблемой.
Когда я запускаю код, он работает нормально, и когда я вводю некоторую информацию в свое текстовое поле, скажем, я ввел 123 в качестве идентификатора, и он показывает: «Поскольку это уже первичный ключ, а идентификатор уже существует, выберите что-то другое ", поэтому я повторно ввел свой идентификатор как 1234 для целей тестирования, и я получил эту ошибку" Соединение не было закрыто. Текущее состояние соединения открыто "У меня есть con.Open () и con.Close (), но я до сих пор не могу решить проблему, вот мой код, если кто-то может помочь, большое спасибо:
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.Data.SqlClient;
namespace Documents
{
public partial class hoadonKT : Form
{
SqlConnection con = new SqlConnection(Properties.Settings.Default.HoaDonKetThucConnection);
SqlCommand cmd;
SqlDataAdapter da;
DataTable dt;
public hoadonKT()
{
InitializeComponent();
}
private void Label1_Click(object sender, EventArgs e)
{
}
private void Label1_Click_1(object sender, EventArgs e)
{
}
private void Button1_Click(object sender, EventArgs e)
{
// save button
if (textBox1.Text == "" && textBox2.Text == "")
{
MessageBox.Show("Hay dien du thong tin can thiet");
}
else
{
try
{
con.Open();
cmd = new SqlCommand(@"INSERT INTO [dbo].[KTHoaDon]
([MaDon],[TenDon])
VALUES
('"+textBox1.Text+"','"+textBox2.Text+"')",con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Du Lieu Da Duoc Luu Tru");
fillGrid();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
public void fillGrid()
{
// fill datagridview from datatable
con.Open();
da = new SqlDataAdapter("select * from KTHoaDon order by MaDon asc", con);
con.Close();
SqlCommandBuilder cd = new SqlCommandBuilder(da);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
private void Button1_Click_1(object sender, EventArgs e)
{
}
private void HoadonKT_Load(object sender, EventArgs e)
{
fillGrid();
}
int i;
private void DataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
i = e.RowIndex;
DataGridViewRow row = dataGridView1.Rows[i];
textBox1.Text = row.Cells[0].Value.ToString();
textBox2.Text = row.Cells[1].Value.ToString();
}
}
}