Tôi đang cố gắng tự động lấy giản đồ của một trong các chế độ xem của tôi trong SQLite bằng C#. Tôi đang sử dụng mã này:Báo cáo ADO.Net loại dữ liệu trống trong SQLite
using (var connection = new SQLiteConnection(ConnectionString))
{
connection.Open();
using (DataTable columns = connection.GetSchema("Columns"))
{
foreach (DataRow row in columns.Rows)
{
string dataType = ((string) row["DATA_TYPE"]).Trim();
// doing irrelevant other stuff here
}
}
}
Hoạt động của nó hoàn hảo cho tất cả các bảng và chế độ xem ngoại trừ một chế độ xem. Vì một lý do nào đó, loại dữ liệu cho trường có tên SaleAmount
sẽ bị trống. Không có gì trong phần tử row["DATA_TYPE"]
.
Đây là quan điểm của tôi:
SELECT [Order Subtotals].Subtotal AS SaleAmount,
Orders.OrderID,
Customers.CompanyName,
Orders.ShippedDate
FROM Customers
JOIN Orders ON Customers.CustomerID = Orders.CustomerID
JOIN [Order Subtotals] ON Orders.OrderID = [Order Subtotals].OrderID
WHERE ([Order Subtotals].Subtotal >2500)
AND (Orders.ShippedDate BETWEEN DATETIME('1997-01-01') And DATETIME('1997-12-31'))
Tôi đang sử dụng standard System.Data.SQLite thư viện. Bất cứ ai có bất kỳ ý tưởng tại sao điều này sẽ đi lên trống? Như tôi đã nói, nó đang xảy ra chỉ trên một lĩnh vực này trong một lần xem này.
CẬP NHẬT
tôi đã tìm ra cách để nhân đôi vấn đề này. Dường như nếu chế độ xem chứa hàm tổng hợp, chẳng hạn như Sum
, GetSchema
sẽ trả về một loại dữ liệu trống. Bất cứ ai biết về một workaround?
Điều này giải thích vấn đề, nhưng nếu tôi hiểu chính xác, '[TYPES]' mong đợi tôi đã biết loại dữ liệu, phải không? Vấn đề là, tôi đang gọi 'GetSchema()' bởi vì tôi không biết kiểu dữ liệu. Xem tiến thoái lưỡng nan của tôi? – Icemanind
Ah tôi hiểu rồi. Cảm ơn bạn @ mish256. Điều này sẽ làm việc cho tôi! – Icemanind