Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Lỗi việc thực thi lệnh update,insert

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    Bốn biển là nhà
    Bài viết
    36

    Mặc định Lỗi việc thực thi lệnh update,insert

    chào các bác!
    em đang làm chương trình quản lý nhưng lại gặp vấn đề về CSDL.
    Khi em thực hiện 2 lệnh cùng lúc:
    -lệnh insert lên Table1
    -lệnh update lên Table2
    thì nó báo lỗi ! nhưng nếu thực hiện từng lệnh thì thành công , insert, update OK!
    bác nào biết cách giải quyết trường hợp này thì chỉ em với!
    thanks!
    ... Từ [0] và [1] họ đã tạo ra nhiều thứ cho những thằng ngu ngồi cãi nhau...

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Viết câu query ra + lỗi xuất hiện
    None!

  3. #3
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Với các câu hỏi như thế này nếu cậu không Edit lại trong vòng 24h nữa là tui sẽ cho nó vào thùng rác.

    Đọc nội qui để biết thêm chi tiết.

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    Bốn biển là nhà
    Bài viết
    36

    lệnh insert dành cho Table: tb_Luutru:
    Code:
    public void insert(Luutruinfo info)
            {
                string upcmd = "insert into tb_Luutru values(" + info.IDkho + "," + info.IDhang + "," + info.Soluong + ")";
                datapro.ExnoQuery(upcmd);
            }
            public void update(Luutruinfo info)
            {
                string upcmd = "update tb_Luutru set Soluong=" + info.Soluong + " where IDkho=" + info.IDkho + " and IDhang=" + info.IDhang + "";
                datapro.ExnoQuery(upcmd);
            }
    lệnh insert của dành cho table: tb_Nhap
    Code:
            public void insert(Nhapinfo ninfo)
            {
                string insertcmd = "if not exists(select * from tb_Nhap where IDnhap='"+ninfo.IDnhap+"')"+
                    "insert into tb_Nhap values('"+ninfo.IDnhap+"',"+ninfo.IDhang+","+ninfo.IDkho+","+ninfo.IDnhasx+","+ninfo.IDnhacc+","+ninfo.Soluong+",'"+ninfo.Ngaynhap+"',"+ninfo.IDnv+")";
                datapro.ExnoQuery(insertcmd);
            }
    trong chương trình sau khi lấy đầy đủ thông tin cho ninfo(nhapinfo) linfo
    thì thực hiện lệnh :
    Code:
    lcontrol.insert(linfo);
    control.insert(nhapinfo);
    hoặc lệnh:
    Code:
    lcontrol.update(linfo);
    control.insert(nhapinfo);
    control và lcontrol là hai đối tượng của 2 Class chứa mấy câu lệnh update và insert ở trên thôi
    còn đây là lỗi của nó:
    HTML Code:
    There is already an open DataReader associated with this Command which must be closed first.
    nếu thực thi chỉ có một lệnh:
    Code:
    lcontrol.insert(linfo);// hoặc lcontrol.update(linfo);
    hoặc
    Code:
    control.insert(nhapinfo);
    thì thực hiện thành công ( việc insert hoặc update diễn ra bình thường)
    Đã được chỉnh sửa lần cuối bởi phthinh : 03-11-2008 lúc 01:07 PM.
    ... Từ [0] và [1] họ đã tạo ra nhiều thứ cho những thằng ngu ngồi cãi nhau...

  5. #5
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Cái này nó báo lỗi là do trong thao tác trên bạn có mở một Reader sau khi reader dùng xong thì phải close nó lại.

    Không biết datapro của bạn là kiểu gì mình không rõ và trong nó khai báo như thế nàp, nhưng một thao tác rất nguy hiểm của các bạn khi làm việc với .NET là giao phó hoàn toàn việc dọn rác cho .NET Framework. tức là mở xong không cần đóng lại rồi cho thằng FrameWork nó tự xử. Rất nguy hiểm.


    đảm bảo trong hàm ExnoQuery của bạn có dùng SqlDatareader mà chưa close nó lại;

    Đây là một lỗi rất khó debug khi gặp nên các bạn phải chú ý.


    ---------------- ----------

    Còn nữa: tui nhắc nhở bạn không phải là vì tui khó tính mà là vì bạn đặt một câu hỏi không xong thì ai sẽ trả lời cho bạn nếu chưa hiểu bạn hỏi cái gì????

    cái này ko cần phải xin lỗi tui hay ai khác mà phải xin lỗi người đọc câu hỏi trên của cậu đó.


    ------ Chúc vui vẽ ---------
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 03-11-2008 lúc 01:34 PM.

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    Bốn biển là nhà
    Bài viết
    36

    Mặc định Lỗi việc thực thi lệnh update,insert

    cái datapro là đối tượng thuộc lớp DataProvider:
    Code:
    protected static string _connectstr=@"server=DONGHOI;uid=sa;pwd=194282064;database=PTTKHT";
            protected SqlConnection connection;
            protected SqlDataAdapter oad;
            protected SqlCommand commad;
            public string connectstr
            {
                get
                {
                    return _connectstr;
                }
                set
                {
                    _connectstr = value;
                }
            }
            public void connect()
            {
                connection = new SqlConnection(connectstr);
                connection.Open();
            }
            public void disconnect()
            {
                connection.Close();
            }
            public void ExnoQuery(string sqlcmd)
            {
                commad = new SqlCommand(sqlcmd,connection);
                commad.ExecuteNonQuery();
            }
    Ngoài ra còn thêm một số phương thức nữa. Nhưng cái SqlDatareader mình có sử dụng ở một phương thức khác để lấy thông tin.
    đảm bảo trong hàm ExnoQuery của bạn có dùng SqlDatareader mà chưa close nó lại;

    Đây là một lỗi rất khó debug khi gặp nên các bạn phải chú ý.
    nghĩa là sau khi sử dụng SqlDatareader thì nên Close nó lại?
    ... Từ [0] và [1] họ đã tạo ra nhiều thứ cho những thằng ngu ngồi cãi nhau...

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    724

    There is already an open DataReader associated with this Command which must be closed first.
    Cái thông báo lỗi nó nói cho bạn quá rõ rùi mà.

    nghĩa là sau khi sử dụng SqlDatareader thì nên Close nó lại?
    uh. Đúng vậy sau khi dùng nó xong phải close nó lại rùi mới làm gì thì làm

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    Bốn biển là nhà
    Bài viết
    36

    thanks............bác zkday2686 và mọi người ! mình làm được rồi! đúng là cần phải Close cái SqlDataReader lại
    ... Từ [0] và [1] họ đã tạo ra nhiều thứ cho những thằng ngu ngồi cãi nhau...

  9. #9
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Chính ra bây giờ có nhiều chiện rất là hay nhớ ^^!

    Các bạn viết code có lỗi chả ban giờ chịu đọc xem cái lỗi ấy là cái gì nhớ, cứ 123 là la lên "ối zồi ôi,lỗi zồi" ^^! Xong zồi mang ngay đi hỏi, mà cũng chẳng thèm cho người khác biết là cái lỗi ấy thế nào. Cứ y như kiểu khám bệnh qua thư ^^! Toàn vừa đọc, vừa đoán xem là lỗi gì ^^! Cứ thêm mấy bạn thế này chả mấy chốc các mod trên CViet thành vạn sự thông ^^!
    Is the moon rising...

Các đề tài tương tự

  1. Cách update/insert đồng thời vào 2 table có structure khác nhau
    Gửi bởi happi trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 14-08-2012, 10:43 PM
  2. Database Insert, Update, Del không tương đồng giưa datagirdview và CSDL
    Gửi bởi nguoirung1.6 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 10-04-2012, 06:06 PM
  3. Insert, update and delete dữ liệu sử dụng ajax như thế nào?
    Gửi bởi pvtam2a trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 10
    Bài viết cuối: 20-11-2011, 01:20 PM
  4. Insert, Update, Delete... bằng SqlDataSource
    Gửi bởi tradangbn trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 03-08-2011, 11:18 AM
  5. Delete, Update, Insert SQL DataBase trong C# ??
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 3
    Bài viết cuối: 17-05-2011, 05:05 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn