Я пытаюсь динамически получить схему одного из моих представлений в SQLite с помощью C#. Я использую этот код:ADO.Net, сообщающий пустой тип данных в 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
}
}
}
Его работа идеально подходит для всех моих столов и видов, за исключением одного вида. По какой-то причине тип данных для поля, называемого SaleAmount
, выглядит пустым. В элементе row["DATA_TYPE"]
ничего нет.
Вот мое мнение:
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'))
Я использую standard System.Data.SQLite библиотеки. Кто-нибудь может подумать, почему это было бы пустым? Как я уже сказал, это происходит только в этом поле в этом представлении.
UPDATE
Я понял, как дублировать вопрос. По-видимому, если представление содержит агрегированную функцию, например Sum
, GetSchema
возвращает пустой тип данных. Кто-нибудь знает об обходном пути?
Это объясняет проблему, но если я правильно понимаю, '[TYPES]' ожидает меня уже знаете тип данных, правильно? Проблема в том, что я вызываю 'GetSchema()', потому что я не знаю тип данных. См. Мою дилемму? – Icemanind
А я понимаю. Спасибо @ mish256. Это будет работать для меня! – Icemanind