1

我有一个实现接口的小班学生。问题是当从 Windows 窗体调用 ADD() 函数时,一旦它到达调用 Update() 函数的代码,DataTable _dtable(在本地声明)就会变为空。如果我从表单而不是类调用 Update() 函数,则代码可以正常工作。

这是我第一次在这个网站上问任何问题,所以我不知道规则,但如果我可以问两个问题,那么我想知道数据操作的最佳方式,面向连接和断开连接。我使用的方法看起来不太实用,因为我没有使用任何 SQL 存储过程。一些教程的链接会很棒。

形式:

void IForm.SaveData(DBCommandType mode)
{
    if (mode == DBCommandType.INSERT)
    {
        _std.FirstName = txtFirstName.Text;
        _std.LastName = txtLastName.Text;
        _istd.Add();
    }
    else if (mode == DBCommandType.UPDATE)
    {
        _istd.Update(_rowPosition);
    }
}

学生班级:

 int IStudent.Add()
 {
     int rowPosition;
     int result;
     Student std = new Student();
     IStudent istd;
     istd = (IStudent)std;
     DataRow drNewRow = _dtable.NewRow();
     _dtable.Rows.Add(drNewRow);
     rowPosition = _dtable.Rows.Count - 1;
     //_dtable holds it value before the Update() function gets called.
     result = istd.Update(rowPosition);
     return 1;
 }

int IStudent.Update(int _rowPosition)
{
    int result =0;
    if (_dtable.Rows.Count != 0)
    {
        _dtable.Rows[_rowPosition]["FirstName"] = this.FirstName;
        _dtable.Rows[_rowPosition]["LastName"] = this.LastName;
        result = _dbc.UpdateDataTable();
    }
    return result;
}
4

1 回答 1

1

从表中更新行时,请确保在更新之前有一行。

替换以下:

     result = istd.Update(rowPosition);

和 :

 if(rowPosition > -1)
    result = istd.Update(rowPosition);
于 2013-11-02T04:10:09.093 回答