Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SqlDataAdapter.Fill () - Tràn chuyển đổi

Mặc dù tập dữ liệu được phép "lấp đầy" bộ điều hợp dữ liệu, tôi thường thực hiện với DataTable thay vì khi truy vấn, tôi chỉ mong đợi một tập kết quả. Nói như vậy, tôi sẽ truy vấn trước bảng, chỉ để lấy cấu trúc của nó ... đại loại như

select whatever from yourTable(s) where 1=2

Điều này sẽ nhận được các cột kết quả mong đợi khi bạn thực hiện

DataTable myTable = new DataTable();
YourAdapter.Fill( myTable );

Bây giờ bạn đã có một bảng cục bộ sẽ không bị lỗi về kích thước nội dung vì không có bản ghi nào được trả về, bây giờ bạn có thể chuyển đến cột đó một cách rõ ràng và đặt thông tin kích thước / kiểu dữ liệu của nó khi bạn cần ...

myTable.Columns["NameOfProblemColumn"].WhateverDataType/Precision = Whatever you need...

BÂY GIỜ, lược đồ cục bộ của bạn là hợp pháp và cột vấn đề sẽ được xác định với độ chính xác của nó. Bây giờ, hãy đặt truy vấn thích hợp của bạn với mệnh đề where thích hợp chứ không phải 1 =2 để thực sự trả về dữ liệu ... Vì không có hàng thực tế nào trong lần vượt qua đầu tiên, bạn thậm chí không cần thực hiện myTable.Clear() để xóa các hàng ... Chỉ cần chạy lại truy vấn và dataAdapter.Fill() .

Tôi chưa thực sự thử vì tôi không có vấn đề dữ liệu của bạn để mô phỏng vấn đề tương tự, nhưng quy trình lý thuyết sẽ giúp bạn thực hiện mà không cần phải đi qua tất cả các cột một cách rõ ràng ... chỉ một số ít có thể gây ra vấn đề.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để ngăn trình kích hoạt cơ sở dữ liệu tái diễn?

  2. Làm cách nào để kiểm tra xem một cột có tồn tại trong bảng SQL Server hay không?

  3. Thủ tục được lưu trữ với tên bảng là tham số

  4. SQL chọn tất cả nếu tham số là null nếu không trả về mục cụ thể

  5. Những lý do không có chỉ mục nhóm trong SQL Server 2005