WPF C#位置0处没有行

WPF C#位置0处没有行,c#,wpf,C#,Wpf,我在处理位置0的无行时遇到问题知道如何解决此问题吗 我的代码: public void FillAPModify() { sqliteConUserData.connection.Close(); sqliteConUserData.connection.Open(); var _command = sqliteConUserData.connection.CreateCommand(); var query = str

我在处理位置0的无行时遇到问题知道如何解决此问题吗

我的代码:

public void FillAPModify()
    {
        sqliteConUserData.connection.Close();
        sqliteConUserData.connection.Open();

        var _command = sqliteConUserData.connection.CreateCommand();
        var query = string.Format("SELECT * FROM tblTracking Where FileNumber = '" + StaticModel.clickNumValue + "' COLLATE NOCASE");
        string commandText = query;

        var _dataAdapter = new SQLiteDataAdapter(commandText, sqliteConUserData.connection);

        DataSet _dataSet = new DataSet();
        DataTable _dataTable = new DataTable();

        _dataSet.Reset();
        _dataAdapter.Fill(_dataSet);

        _dataTable = _dataSet.Tables[0];
        var rows = _dataTable.Rows;

        string fileNumber = rows[0].ItemArray[0] as string;  \\error
        var shiftDate = rows[0].ItemArray[1];
        var timeCreated = rows[0].ItemArray[2];
        string remarks = rows[0].ItemArray[3] as string;

        UserDataVar = new UserDataProperties
        {
            FileNumber = fileNumber,
            ShiftDate = shiftDate.ToString(),
            TimeCreated = timeCreated.ToString(),
            Remarks = remarks
        };

        sqliteConUserData.connection.Close();
    }
我试过这个,但没有成功:

     if (_dataSet.Tables.Count > 0)
        {
            if (_dataSet.Tables[0].Rows.Count > 0)
            {
               \\my stuff
            }
        }

您的修复应该可以工作,但我总是检查以确保数据集也不为null,并使其全部为一个if语句

if (_dataSet!= null && _dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0)
{
    _dataTable = _dataSet.Tables[0];
    var rows = _dataTable.Rows;

    string fileNumber = rows[0].ItemArray[0] as string;  \\error
    var shiftDate = rows[0].ItemArray[1];
    var timeCreated = rows[0].ItemArray[2];
    string remarks = rows[0].ItemArray[3] as string;

    UserDataVar = new UserDataProperties
    {
        FileNumber = fileNumber,
        ShiftDate = shiftDate.ToString(),
        TimeCreated = timeCreated.ToString(),
        Remarks = remarks
    };
}

错误在哪里?您尝试将支票放在哪里?(请开始使用参数化SQL,而不是直接将值放入SQL中。)您的修复是正确的。如果只访问最里面的
If
中的
行[0]
,则此错误不应再发生。(很明显,其他错误可能是由其他错误引起的,但您还没有告诉我们这些错误。)错误为`string fileNumber=rows[0].ItemArray[0]as string;`表示没有行,例如
\u dataTable。行
没有填充数据,查询不能返回任何内容。我不同意这一点。在本例中,
\u dataSet
不可能是
null
:它被初始化为
new dataSet()
,它永远不会返回
null
(在C中,没有
new
类构造函数可以返回
null
),并且它永远不会被重新分配或作为ref参数传递。因此,如果
\u数据集
在那一点上确实是
null
,那么在某个地方有一个隐藏的bug,该方法应该会失败并出现异常(通知开发人员该bug)然后我就不能得到数据了你有没有想过让方法返回UserDataVar而不是在方法中设置它?如果用户确实没有UserDataProperties,会发生什么?