DataReader 从不进入 Read()

DataReader never enters Read()

使用 Prism 5(如果重要的话),我正在尝试将 table 读入 class 但是当我 运行 程序时,SQLiteDataReader Read() 永远不会执行(或者我认为因为它的断点永远不会被击中)。

在我的解决方案中,我有一个带有 ViewModel class 的 ModuleA,其方法将更新视图中的绑定:

    public void ShowGeneral()
    {
        Personnel personnel = new Personnel();
        personnel = PersonnelDAL.GetPersonnelRecord(Human);
        pName = personnel.PersonName + " Esquire";
        pAge = personnel.PersonAge;
    }

PersonnelDAL.GetPersonnelRecord() 在单独的模块中。 (本模块引用了 SQLite)。

public static Personnel GetPersonnelRecord(int id)
    {
        SQLiteConnection myDBconnection = new SQLiteConnection(SQLiteDAL.dbConnectionString);
        Personnel personnel = new Personnel();

        try
        {
            myDBconnection.Open();
            string strQuery = "SELECT Person.*, Personnel.*," +
                " FROM Person, Personnel WHERE Person.PersonPersonnelID = Personnel.PersonnelID AND Person.PersonID = @PersonID";
            SQLiteCommand query = new SQLiteCommand(strQuery, myDBconnection);
            query.Parameters.Add(new SQLiteParameter("@PersonID") { Value = id });
            // A Breakpoint set here is hit
            SQLiteDataReader myReader = query.ExecuteReader();

            // A Breakpoint set here is never hit
            while (myReader.Read())
            {
                personnel.PersonID = myReader.GetInt32(0);
                personnel.PersonName = myReader.GetInt32(1);
                personnel.PersonAge = myReader.GetInt32(3);

                // etc

因此,视图不显示年龄值,只显示 Esquire 名称。

为什么 myreader.Read() 从未执行过?

您的查询在 FROM 子句前有一个错误的逗号:

string strQuery = "SELECT Person.*, Personnel.*," +
            " FROM Person, Personnel WHERE ...";

您没有 post 整个代码片段,但我猜您正在吞下异常。我不会那样做的。