Соединение не было закрыто. Текущее состояние соединения открыто. C# - PullRequest
0 голосов
/ 23 апреля 2020

Я практикую свои 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();
        }
    }
}

1 Ответ

1 голос
/ 23 апреля 2020

попробуйте этот код.

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 Button1_Click(object sender, EventArgs e)
        {
            // save button
            if (textBox1.Text == "" && textBox2.Text == "")
            {
                MessageBox.Show("Hay dien du thong tin can thiet");
            }
            else
            {
                try
                {
                    string queryText = "INSERT INTO [dbo].[KTHoaDon] ([MaDon],[TenDon]) VALUES(@MaDon,@TenDon)";
                    using (cmd = new SqlCommand(queryText, con))
                    {
                        cmd.Parameters.AddWithValue("MaDon", textBox1.Text);
                        cmd.Parameters.AddWithValue("TenDon", textBox2.Text);

                        cmd.ExecuteNonQuery();
                    }
                    MessageBox.Show("Du Lieu Da Duoc Luu Tru");

                    fillGrid();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        public void fillGrid()
        {
            dt = new DataTable();
            // fill datagridview from datatable
            using (da = new SqlDataAdapter("select * from KTHoaDon order by MaDon asc", con))
            {                                
                da.Fill(dt);
            }
            dataGridView1.DataSource = dt;
        }

        private void HoadonKT_Load(object sender, EventArgs e)
        {
            con.Open();
            fillGrid();
        }

        private void HoadonKT_FormClosing(object sender, FormClosingEventArgs e)
        {
            con.Close();
        }

        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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...