Die Tabelle in SQL Server hinzufügen, die ich versuche, Daten zu extrahieren aus hat die folgenden Spalten:eine NotSupportedException beim Versuch, ein Objekt zu einer Liste
Namen | Geschlecht | Gehalt | Abteilung
Im folgenden Code versuche ich nur, Mitarbeiterinformationen aus einer Tabelle zu extrahieren, ein Mitarbeiterobjekt aus diesen Informationen zu erstellen und dieses Objekt dann zu einer Liste von Mitarbeitern hinzuzufügen. Hier ist der Code:
namespace LINQQueriesPart2
{
class Program
{
List<Employee> whatever = EmployeeDB.getEmployees();
IEnumerable<Employee> query = from y in whatever
where y.name[0] == 'M'
select y;
foreach (Employee x in query)
{
Console.WriteLine(x.name);
}
}
}
namespace ConnectingToSql
{
public static class EmployeeDB
{
public static List<Employee> getEmployees()
{
List<Employee> returnList = new List<Employee>();
String connectionString = "server=DESKTOP-T5KDKOP;"
+ "database=MCP_Exam_70-483_Prep;"
+ "Trusted_Connection=yes";
if (SQLConnectingTools.CheckConnection(connectionString))
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand command = new SqlCommand("SELECT * FROM employees", connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
returnList.Add(
new Employee
{
name = reader.GetString(0),
gender = reader.GetChar(1),
salary = reader.GetInt16(2),
department = reader.GetString(3)
}
);
}
reader.Close();
connection.Close();
}
else
{
Console.WriteLine("SQL connection is not successful.");
}
return returnList;
}
}
public class Employee
{
public String name { get; set; }
public char gender { get; set; }
public int salary { get; set; }
public String department { get; set; }
public Employee() { }
}
}
Wenn ich den obigen Code im Debug-Modus (in Visual Studio) laufen, die Code bricht und der folgende Code wird gelb markiert:
returnList.Add(
new Employee
{
name = reader.GetString(0),
gender = reader.GetChar(1),
salary = reader.GetInt16(2),
department = reader.GetString(3)
}
);'
Was ist die genaue Ausnahme Nachricht & innere Ausnahmemeldung, die Sie bekommen? Und was sind die Spaltenarten in der Ergebnismenge, die Sie von der Abfrage 'SELECT * FROM employees' erhalten? – Shyju
Sie könnten die Mitarbeiter leichter in eine DataTable laden. Wenn Sie 'SELECT *' wählen, steuern Sie nicht wirklich, in welcher Reihenfolge die Spalten zurückkommen. Sie könnten versuchen, ein Datum über 'GetInt16()' zu bekommen – Plutonix