Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ช่วยผมด้วยมีปัญหา .ExecuteNonQuery() มันขึ้นว่า ExecuteNonQuery requires an open and available Connection. The connection's current state is closed



 

ช่วยผมด้วยมีปัญหา .ExecuteNonQuery() มันขึ้นว่า ExecuteNonQuery requires an open and available Connection. The connection's current state is closed

 



Topic : 056051

Guest




รันได้ครับป้อนข้อมูลได้ตอนกด เพิ่ม ไม่ได้ นี่โค๊ดของผมครับ

Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.OleDb;

namespace AppSharp {
    public partial class FormCustomer : Form {

        private DataSet _dataset;
        private OleDbConnection _conn;
        private OleDbCommand _command;
        private int _rowCount;
        private int _position;

        public FormCustomer() {
            InitializeComponent();
        }

        private void FormCustomer_Load(object sender, EventArgs e) {

         /*   string conStr = "Provider=Microsoft.Jet.OleDb.4.0;" +
                            "Data Source=" + Application.StartupPath + 
                            @"\AppSharp.mdb";
        */
            string conStr = "Provider=Microsoft.Jet.OleDb.4.0;" +
                @"Data Source=D:\Project\AppSharp\AppSharp\bin\Debug\AppSharp.mdb";
            
            _conn = new OleDbConnection(conStr);
            _conn.Open();

            readData();
            fillListBox();
            bindings();

        }

        private void FormCustomer_FormClosing(object sender, FormClosingEventArgs e) {

            _conn.Close();

        }

        // อ่านข้อมูลมาเก็บไว้ใน DataSet
        private void readData() {

            string sql = "SELECT * FROM Customers";
            _command = new OleDbCommand(sql, _conn);

            OleDbDataAdapter adapter = new OleDbDataAdapter(_command);

            _dataset = new DataSet();
            adapter.Fill(_dataset, "cust");
            _rowCount = _dataset.Tables["cust"].Rows.Count;

        }

        // เพิ่มรายชื่อลูกค้าลงใน ListBox
        private void fillListBox() {

            string custname = "";
            listBox1.Items.Clear();

            for(int i = 0; i < _dataset.Tables["cust"].Rows.Count; i++) {
                custname = _dataset.Tables["cust"].Rows[i]["CustomerName"
                                                          ].ToString();
                listBox1.Items.Add(custname);
            }

            // ให้รายการลำดับแรกใน ListBox ถูกเลือก
            // ซึ่งจะเกิดอีเวนท์ SelectedIndexChanged ตามมา
            if(listBox1.Items.Count > 0) {
                listBox1.SelectedIndex = 0;
            }

        }

        // ทำการ Binding ข้อมูลกับ TextBox
        private void bindings() {

            tbxCustID.DataBindings.Add("Text", _dataset,
                                "cust.CustomerID");

            tbxName.DataBindings.Add("Text", _dataset,
                                "cust.CustomerName");

            tbxAddress.DataBindings.Add("Text", _dataset,
                                "cust.Address");

        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e) {
    
            int index = listBox1.SelectedIndex;
            this.BindingContext[_dataset, "cust"].Position = index;
            _position = index;
           
            updateStatus();

        }

        private void updateStatus() {

            toolStripStatusLabel1.Text = (_position + 1) + " of " + _rowCount;

        }

        private void btnClear_Click(object sender, EventArgs e) {

            if(btnClear.Text == "Clear") {
                clearBindings();
                btnClear.Text = "ยกเลิก";
                listBox1.Enabled = false;
            }
            else {
                btnClear.Text = "Clear";
                listBox1.Enabled = true;
                bindings();
            }
            
        }

        // ถ้าจะทำการ Binging ใหม่ ต้องยกเลิกการ Binding เดิม
        private void clearBindings() {

            for(int i = 0; i < groupBox1.Controls.Count; i++) {
                if(groupBox1.Controls[i] is TextBox) {
                    TextBox tbx = (TextBox)groupBox1.Controls[i];
                    tbx.Text = "";
                    tbx.DataBindings.Clear();
                }
            }

        }

        private void insertOrUpdate() {

            if(tbxName.Text == "" || tbxAddress.Text == "") {
                MessageBox.Show("กรุณาใส่ข้อมูลให้ครบ");
                return;
            }

            string sql = "";
            if(tbxCustID.Text == "") {
                sql = "INSERT INTO Customers(" +
                      "CustomerName, Address) " +
                      "VALUES(@name, @address)";
            }
            else {
                sql = "UPDATE Customers SET " +
                      "CustomerName = @name, Address = @address " +
                      "WHERE CustomerID = " + tbxCustID.Text;
            }

            _command = new OleDbCommand(sql, _conn);

            _command.Parameters.AddWithValue("name", tbxName.Text);
            _command.Parameters.AddWithValue("address", tbxAddress.Text);

            int affectedRow = _command.ExecuteNonQuery();
            if(affectedRow < 1) {
                MessageBox.Show("เกิดข้อผิดพลาดในบันทึกข้อมูล!");
            }
            else {
                toolStripStatusLabel1.Text = "ข้อมูลถูกจัดเก็บแล้ว";

                string name = tbxName.Text;

                // หลังเพิ่มหรือแก้ไข ให้อ่านข้อมูลเข้ามาใหม่ เพื่อให้ข้อมูลสอดคล้องกับความเป็นจริง
                readData();
                fillListBox();
                clearBindings();

                // ให้ทำไฮไลท์ ListBox รายการที่เราเพิ่มหรือแก้ไขใหม่
                int idx = listBox1.FindStringExact(name);
                if(idx > -1) {
                    listBox1.SetSelected(idx, true);
                }

                updateStatus();
            }

        }

        private void btnAdd_Click(object sender, EventArgs e) {

            insertOrUpdate();

        }

        private void btnUpdate_Click(object sender, EventArgs e) {

            insertOrUpdate();
            bindings();

        }

        private void btnDelete_Click(object sender, EventArgs e) {

            if(tbxCustID.Text == "") {
                return;
            }

            DialogResult dlgResult = MessageBox.Show("ลบข้อมูลลูกค้ารายนี้ ?", 
                                                    "ลบข้อมูล", 
                                                    MessageBoxButtons.OKCancel);

            if (dlgResult == DialogResult.Cancel) {
                return;
            }

            string sql;
            sql = "DELETE FROM Customers WHERE CustomerID = " + tbxCustID.Text;
            _command = new OleDbCommand(sql, _conn);

            int r  = _command.ExecuteNonQuery();
            if(r > 0) {
                toolStripStatusLabel1.Text = "ข้อมูลถูกลบแล้ว";
            }
            
            int idx0  = listBox1.SelectedIndex;
            clearBindings();
            readData();
            fillListBox();
            bindings();

            if(idx0 > 0) {
                listBox1.SetSelected(idx0 - 1, true);
            }

            
            // ลบข้อมูลการสั่งซื้อของลูกค้าที่เราลบออกจากตาราง Orders ด้วย
            sql = "DELETE FROM Orders WHERE CustomerName = @cust";
            _command = new OleDbCommand(sql, _conn);
            _command.Parameters.AddWithValue("cust", tbxName.Text);
            _command.ExecuteNonQuery();
             
        }

        private void tbxCustID_TextChanged(object sender, EventArgs e) {

            if(tbxCustID.Text == "") {
                btnDelete.Enabled = false;
                btnUpdate.Enabled = false;
                btnAdd.Enabled = true;
            }
            else {
                btnDelete.Enabled = true;
                btnUpdate.Enabled = true;
                btnAdd.Enabled = false;
            }

        }

    }
}




Tag : .NET, Ms Access, Win (Windows App), C#, VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-02-15 12:23:49 By : Aeknarin View : 1506 Reply : 1
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ExecuteNonQuery requires an open and available Connection. The connection's current state is closed

มันแจ้งว่า Connect ถูกปิดแล้วน่ะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-15 14:20:57 By : webmaster
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยผมด้วยมีปัญหา .ExecuteNonQuery() มันขึ้นว่า ExecuteNonQuery requires an open and available Connection. The connection's current state is closed
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่