-
29-08-2011, 09:47 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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.View more random threads:
- di chuyển lable đến vị trí khác trên Form C#?
- WinForm Server bị treo khi chờ connect từ client
- Close 1 lúc nhiều form C# bằng cách nào?
- kế thừa giải phương trình trùng phương không tìm ra lỗi
- Cách thay đổi thời gian của máy tính trong c#?
- Truyền biến giữa 2 website như thế nào?
- Sử dụng sự kiện listview được tạo trong tabcontrol
- Cần source code làm đề án "Ngôn ngữ lập trình"
- Cài đặt ứng dụng sử dụng SQL server giữa 2 máy trong mạng LAN
- Có thể tạo liên kết các form khác project không?
-
29-08-2011, 11:34 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi tnphong
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ỉ
-
29-08-2011, 05:08 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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=1234 56;" ;
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
}
}
...
Mình phải set primary key cho dTable, nhưng ko biết có đúng hok...và code ntn
-
29-08-2011, 05:46 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nhuan07
Bạn dùng SQL bao nhiêu!!!???
-
29-08-2011, 06:03 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
SQL Server 2008 R2
-
29-08-2011, 06:15 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nhuan07
Bạn làm thêm xoá sửa trên datagridview ah???
-
29-08-2011, 06:20 PM #7Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 0
Gửi bởi cchangkhongayngo
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 đó.
-
29-08-2011, 06:33 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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ỉ [IMG]images/smilies/wink.png[/IMG][IMG]images/smilies/wink.png[/IMG]
-
29-08-2011, 06:44 PM #9Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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[IMG]images/smilies/biggrin.png[/IMG]
Ăn cơm đã!![IMG]images/smilies/18.gif[/IMG]
-
29-08-2011, 07:31 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Kiểm tra table Test có primary key chưa?
Thân ^^
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...