SQL Serverのデータを抽出しようとしているテーブルには、次の列があります。リストにオブジェクトを追加しようとするとNotSupportedExceptionが発生する
name |性別|給料| department
以下のコードでは、テーブルから従業員情報を抽出し、その情報から従業員オブジェクトを作成し、そのオブジェクトを従業員のリストに追加するだけです。ここで コードです:
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() { }
}
}
私は(Visual Studioで)デバッグモードで上記のコードを実行すると、コードブレークし、次のコードは、黄色の強調表示されています:すべての
returnList.Add(
new Employee
{
name = reader.GetString(0),
gender = reader.GetChar(1),
salary = reader.GetInt16(2),
department = reader.GetString(3)
}
);'
正確な例外では何メッセージ&内部例外メッセージを取得していますか?そして、SELECT * FROM employeesクエリから取得した結果セットの列の種類は何ですか? – Shyju
従業員をDataTableに簡単に読み込むことができます。つまり、 'SELECT *'を指定すると、列がどのような順序で戻ってくるかを実際は制御できません。 'GetInt16()'で日付を取得しようとしている可能性があります。 – Plutonix