2010 Access 데이터베이스에서 데이터를 가져 오려고합니다. 이것은 공급 업체 번호를 가져와야합니다.C#으로 액세스 데이터베이스에서 정수 가져 오기
"잘못된 CastException이 사용자 코드에 의해 처리되지 않았습니다. 지정한 캐스트가 유효하지 않습니다." 내가 프로젝트를 만들려고 할 때. 나는 내 데이터베이스에서 VNNO 열을 두 번 확인했으며 정수로 설정되었습니다. 나는 간단한 것을 놓치고 있어야합니다.
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);
}
다음은 결함없이 작동하는 또 다른 코드입니다. 공급 업체의 실제 이름을 가져옵니다.
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);
}
데이터 세트의 최대 정수는 얼마입니까? Int64가 필요할 수도 있습니까? –
@ Zachary 필자는 텍스트 = (reader.GetInt32 (reader.GetOrdinal ("VNNO"))) .ToString(); ' – Chaitanya
@devlincarnate가 Int64도 테스트했는지 확인해야한다고 생각합니다. 최대 값은 약 8000입니다. –