Próbuję dynamicznie uzyskać schemat jednego z moich widoków w SQLite przy użyciu C#. Używam tego kodu:ADO.Net raportowanie pusty typ danych w 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
}
}
}
Działa doskonale dla wszystkich moich tabel i widoków z wyjątkiem jednego widoku. Z jakiegoś powodu typ danych dla pola o nazwie SaleAmount
jest pusty. W elemencie row["DATA_TYPE"]
nie ma nic.
Oto mój widok:
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'))
używam biblioteki standard System.Data.SQLite. Ktoś ma jakiś pomysł, dlaczego to będzie puste? Tak jak powiedziałem, dzieje się to tylko na tym polu w tym jednym widoku.
UPDATE
I zorientowali się, jak odtworzyć ten problem. Wygląda na to, że widok zawierający funkcję agregującą, taki jak Sum
, GetSchema
, zwraca pusty typ danych. Ktoś wie o obejściu?
To wyjaśnia problem, ale jeśli dobrze rozumiem, '[TYPY]' oczekuje, że już znasz typ danych, prawda? Problem w tym, nazywam 'GetSchema()', ponieważ nie znam typu danych. Widzisz mój dylemat? – Icemanind
Ah Rozumiem. Dziękuję @ mish256. To zadziała dla mnie! – Icemanind