Sto cercando di ottenere in modo dinamico lo schema di una delle mie viste in SQLite utilizzando C#. Sto usando questo codice:ADO.Net che segnala il tipo di dati vuoto in 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
}
}
}
Funziona perfettamente per tutte le mie tabelle e visualizzazioni tranne per una vista. Per qualche motivo, il tipo di dati per il campo chiamato SaleAmount
è vuoto. Non c'è nulla nell'elemento row["DATA_TYPE"]
.
Qui è la mia opinione:
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'))
Sto usando le standard System.Data.SQLite librerie. Qualcuno ha idea del perché questo sarebbe venuto fuori vuoto? Come ho detto, sta accadendo solo su questo campo in questa vista.
UPDATE
ho capito come duplicare il problema. Apparentemente, se una vista contiene una funzione di aggregazione, come Sum
, GetSchema
restituisce un tipo di dati vuoto. Qualcuno sa di una soluzione alternativa?
Questo spiega il problema, ma se sto capendo correttamente, '[TYPES]' mi aspetta già conosci il tipo di dati, giusto? Il problema è che sto chiamando 'GetSchema()' perché non conosco il tipo di dati. Vedi il mio dilemma? – Icemanind
Ah, ho capito. Grazie @ mish256. Questo funzionerà per me! – Icemanind