代码之家  ›  专栏  ›  技术社区  ›  Anirudh Goel

数据集何时应反映在vb.net中插入后更新的行数

  •  0
  • Anirudh Goel  · 技术社区  · 16 年前

    我有一个SQL数据库,并为其中的一个示例表创建了一个数据集。

    数据集是hoteldataset2,要插入到其中的数据表适配器是各种“itemstableadapter”。

     MsgBox(HotelDataSet2.various_items.Rows.Count)
     Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked)
     MsgBox(HotelDataSet2.various_items.Rows.Count)
    

    这始终反映插入前后相同的计数..但如果我执行此操作

    MsgBox(HotelDataSet2.various_items.Rows.Count)
    Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked)
    Various_itemsTableAdapter.Fill(HotelDataSet2.various_items)
    MsgBox(HotelDataSet2.various_items.Rows.Count)
    

    它将新计数显示为旧计数的+1。所以我得出的结论是,每当我通过表适配器将一些数据更改为表时,我总是必须重新填充数据集?那这有什么用呢??

    1 回复  |  直到 16 年前
        1
  •  1
  •   Adam Robinson    16 年前

    你这样做是错误的。你应该使用 DataSet 要进行更改(即,创建 DataRow ,然后将相应的 DataTable 数据集 对你 TableAdapter 为了通过调用 Update 功能上 填充器

    tableAdapter.Update(dataSetName);
    

    调用 Insert 函数只将该数据直接插入到数据库本身的表中;它对数据的任何本地副本(例如 数据集 )

    作为旁注, 尽量避免使用特定于语言的函数,如 MsgBox . 相反,要显示消息框,请尝试调用 MessageBox.Show(...) 因为这是语言独立的。

    编辑

    澄清一下,正确的方法是创建一个新的 数据行 ,用新值填充其列,然后添加 数据行 到相应的表,然后将该表传递给 填充器 通过 更新 功能。

    例如,我……

    A DataSet named myDataSet
    A DataTable in myDataSet called MyTable
    A TableAdapter for MyTable called myTableAdapter
    Two columns in that table, FirstName and LastName
    Two TextBoxes called txtFirstName and txtLastName
    

    要插入具有这些值的行,我将执行以下操作:

    DataRow row = myDataSet.MyTable.NewRow(); // creates a new row with the correct columns
    
    row["FirstName"] = txtFirstName.Text;
    row["LastName"] = txtLastName.Text;
    
    myDataSet.MyTable.Rows.Add(row); // adds the new row to the in-memory table
    
    myTableAdapter.Update(myDataSet); // persists all of the changes to the DataSet
    
    推荐文章