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

Đề tài: Update dữ liệu từ DataGridView trên WinForm bị lỗi: Dynamic SQL generation for the UpdateCommand is not supported

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    96

    Post Update dữ liệu từ DataGridView trên WinForm bị lỗi: Dynamic SQL generation for the UpdateCommand is not supported

    public partial class ThongKe : Form
    {
    SqlConnection conn = new SqlConnection();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    SqlCommandBuilder cBuilder ;
    DataTable dTable =new DataTable();


    public ThongKe()
    {
    InitializeComponent();
    }

    private void loadData_Click(object sender, EventArgs e)
    {
    //Query database
    conn.ConnectionString = "Server=Shang;Database=vanedb;UID=dba;PWD=123456;" ;
    conn.Open();
    dAdapter = new SqlDataAdapter("SELECT * FROM Test", conn);
    cBuilder = new SqlCommandBuilder(dAdapter);

    //Get result
    dAdapter.Fill(dTable);

    //Display result
    dataGridView1.DataSource = dTable;


    conn.Close();
    }



    private void updateData_Click(object sender, EventArgs e)
    {

    dAdapter.Update(dTable);///Lỗi ở đây

    }
    }
    Thông báo lỗi là: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information

    ...
    Mình phải set primary key cho dTable, nhưng ko biết có đúng hok...và code ntn

  2. #2
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Trích dẫn Nguyên bản được gửi bởi nhuan07 Xem bài viết
    Thông báo lỗi là: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information

    ...
    Mình phải set primary key cho dTable, nhưng ko biết có đúng hok...và code ntn
    "supported"!!!!!!!!

    Bạn dùng SQL bao nhiêu!!!???

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    96

    SQL Server 2008 R2

  4. #4
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Trích dẫn Nguyên bản được gửi bởi nhuan07 Xem bài viết
    SQL Server 2008 R2
    Mình thì đang dùng 2k5 nên 2k8 thì ko rành lắm!!!

    Bạn làm thêm xoá sửa trên datagridview ah???

  5. #5
    Ngày gia nhập
    05 2011
    Bài viết
    96

    Trích dẫn Nguyên bản được gửi bởi cchangkhongayngo Xem bài viết
    Mình thì đang dùng 2k5 nên 2k8 thì ko rành lắm!!!

    Bạn làm thêm xoá sửa trên datagridview ah???
    Đâu có đâu, thằng SqlDataAdapter nó hổ trợ sẵn hết rồi. ... Việc bây giờ là PHẢI chỉ cho nó hiểu để nó biết mà làm thế nào...

    Vì thằng dTable nó đang dữ một table, mà table này là kết quả của câu truy vấn, vì vậy thông tin chứa trong dTable có thể do nhiều table khác gộp thành.

    Vậy bây giờ, mình nhấn Update...nó biết update cái gì và update tới đâu..đâu ..vậy đó.

  6. #6
    Ngày gia nhập
    05 2011
    Bài viết
    96

    Mặc định Update dữ liệu từ DataGridView trên WinForm bị lỗi: Dynamic SQL generation for the UpdateCommand is not supported

    Anh/em nào mới nhập môn thì cùng phân tích cho vui nhé.
    ...

    SqlDataAdapter: nhận nhiệm vụ liên lạc, vận chuyển giúp, giống máy ông đi xe bưu điện chuyển thư từ, hàng hóa đó. Nhận hàng của người gửi đêm đến cho người nhận.

    DataTable or DataSet: DataSet có một thuộc tính là Table, thuộc tính này lưu trữ các đối tượng của DataTable. Khi có nhu cầu nhận nhiều table thì dùng DataSet, nếu chỉ dùng một thì dùng DataTable.
    DataTable, là người nhận, theo như ví dụ trên. Nó sẽ tạo ra vùng nhớ, lưu trữ toàn bộ dữ liệu gửi đến...Nó hơi ngu ngu một chút, tất các các thuộc tính của đối tượng gửi đến nó đều biết hết, ngoại trừ PHẢI chỉ ra khóa cho table đó. Nếu làm trên ORACLE thì ok...nó tự động tạo khóa. Máy cha lập trình ở MS ngủ quên...quên làm cho SQL.

    DataGridView...thực ra chỉ là màn hình tivi...lấy dữ liệu từ DataTable và hiển thỉ lên...LƯU Ý: mọi thao tác sờ mó trên DataGridView chính là trên DataTable...Vậy hiển nhiên..chẳng có khái niểm...DataGridView Select.Insert.Update.Delete..ảnh hưởng trực tiếp đến database.

    Ok...vậy bây giờ...Phải chỉ khóa cho nó (DataTable)..chỉ như thế nào nhỉ

  7. #7
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Cái này của mình sẽ giải quyết mọi vấn đề trên thăng datagrdview!!

    Cũng giống cái của bác nhuận đang làm đó!

    Bên dự án source code có bài!

    Tổng hợp các demo...

    cái file Demo Datagridview.rar

    Ăn cơm đã!!
    Đã được chỉnh sửa lần cuối bởi cchangkhongayngo : 29-08-2011 lúc 11:56 AM.

  8. #8
    Ngày gia nhập
    06 2010
    Bài viết
    10

    Kiểm tra table Test có primary key chưa?
    Thân ^^

  9. #9
    Ngày gia nhập
    03 2011
    Nơi ở
    Huế
    Bài viết
    37

    Không biết là đoạn code bạn gởi có đủ không. Nếu chỉ là như vậy thì khi Update sẽ không được vì đối tượng DataAdapter chỉ có mỗi câu lệnh select (SelectCommand).

    Để thông qua DataAdapter để thực hiện việc Update những thay đổi dữ liệu từ DataTable lên CSDL, đối tượng DataAdapter phải có thêm các lệnh InsertCommand, UpdateCommand, DeleteCommand (tùy vào thao tác bạn muốn thực hiện).

    Trong trường hợp, bạn muốn sử dụng CommandBuilder để tạo ra các lệnh Insert, Update và Delete (căn cứ trên lệnh Select) thì bảng mà bạn truy vấn phải có PrimaryKey.

  10. #10
    Ngày gia nhập
    05 2011
    Bài viết
    96

    Trích dẫn Nguyên bản được gửi bởi tnphong Xem bài viết
    Trong trường hợp, bạn muốn sử dụng CommandBuilder để tạo ra các lệnh Insert, Update và Delete (căn cứ trên lệnh Select) thì bảng mà bạn truy vấn phải có PrimaryKey.
    Bản Test của mình chỉ đơn giản hai column ID, Name (ID: PrimaryKey).
    Sau khi đổ toàn bộ dữ liệu từ database (Test table) lên đối tượng dTable, ko biết có phải đặt lại khóa ko...
    Và đặt như thế nào nhỉ

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

  1. cách update ngay trên DataGridView xuống CSDL mà không cần nhấn nút Update
    Gửi bởi heoxinh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 21-07-2015, 03:13 PM
  2. Update dữ liệu trực tiếp trên DataGridView?
    Gửi bởi nth4 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 3
    Bài viết cuối: 25-02-2012, 08:34 PM
  3. Database Update dữ liệu đã edit trên datagridview vào DB
    Gửi bởi tambeotb4 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 22-05-2011, 05:36 PM
  4. Database với C# lỗi "Dynamic SQL generation is not supported against multiple base tables."
    Gửi bởi love0ne114 trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 3
    Bài viết cuối: 28-04-2010, 12:55 AM
  5. Rắc rối với UpdateCommand khi Update nhiều bảng
    Gửi bởi coldheart trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 26-03-2010, 02:30 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