Ich versuche, Daten aus einer Access-Datenbank 2010 zu ziehen. Dies sollte die Lieferantennummer ziehen.Ziehen von Ganzzahlen aus Access-Datenbank mit C#
Ich bekomme zwar eine "ungültige CastException wurde von Benutzercode nicht behandelt. Angegebene Cast ist nicht gültig." wenn ich versuche, das Projekt zu bauen. Ich habe meine Spalte VNNO in meiner Datenbank doppelt überprüft und sie ist auf eine Ganzzahl gesetzt. Ich muss etwas Einfaches vermissen.
public SelectList GetVendors(String selected = "")
{
IList<SelectListItem> vendors = new List<SelectListItem>();
vendors.Add(new SelectListItem { Text = "", Value = "- Select Vendor -" });
vendors.Add(new SelectListItem { Text = "TO BE ASSIGNED", Value = "TO BE ASSIGNED" });
using (OleDbConnection myConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["VendorConnection"].ConnectionString))
{
myConnection.Open();
using (OleDbCommand command = new OleDbCommand())
{
command.CommandText = "SELECT * FROM [MY PPUR301] ORDER BY [VNNO] ASC";
command.Connection = myConnection;
command.Prepare();
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string text = "";
string value = "";
if (!reader.IsDBNull(reader.GetOrdinal("VNNO")))
{
text = reader.GetInt32(reader.GetOrdinal("VNNO")).ToString();
}
if (!reader.IsDBNull(reader.GetOrdinal("VNNO")))
{
value = reader.GetInt32(reader.GetOrdinal("VNNO")).ToString();
}
vendors.Add(new SelectListItem { Text = text.ToUpper(), Value = value.ToUpper() });
}
}
}
}
return new SelectList(vendors, "Text", "Value", selected);
}
Hier ist ein weiteres Stück Code, das einwandfrei funktioniert. Es zieht den tatsächlichen Namen des Anbieters.
public SelectList GetVendors(String selected = "")
{
IList<SelectListItem> vendors = new List<SelectListItem>();
vendors.Add(new SelectListItem { Text = "", Value = "- Select Vendor -" });
vendors.Add(new SelectListItem { Text = "TO BE ASSIGNED", Value = "TO BE ASSIGNED" });
using (OleDbConnection myConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["VendorConnection"].ConnectionString))
{
myConnection.Open();
using (OleDbCommand command = new OleDbCommand())
{
command.CommandText = "SELECT * FROM [MY PPUR301] ORDER BY [VNNAME] ASC";
command.Connection = myConnection;
command.Prepare();
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string text = "";
string value = "";
if (!reader.IsDBNull(reader.GetOrdinal("VNNAME")))
{
text = reader.GetString(reader.GetOrdinal("VNNAME")).ToString().Trim();
}
if (!reader.IsDBNull(reader.GetOrdinal("VNNAME")))
{
value = reader.GetString(reader.GetOrdinal("VNNAME")).ToString().Trim();
}
vendors.Add(new SelectListItem { Text = text.ToUpper(), Value = value.ToUpper() });
}
}
}
}
return new SelectList(vendors, "Text", "Value", selected);
}
Was ist die maximale Ganzzahl in Ihrem Datensatz? Ist es möglich, dass Sie Int64 benötigen? –
@Zachary Ich denke, es muss sein "text = (reader.GetInt32 (reader.GetOrdinal (" VNNO "))). ToString();' – Chaitanya
@devlincarnate getestet Int64 auch. Ich glaube, dass max um 8000 ist. –