winforms 表适配器未更新到数据库

oknrviil  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(124)

我创建了一个表单系统来接收员工的个人数据(目的是创建帐户)正确获取数据并将其输入数据集(dataSet2)。下面这行是我认为更新数据库的正确代码集(Database1)。数据正确输入数据集,没有任何问题,但我没有看到任何数据输入到数据库中,没有错误代码输出或提供。2感谢所有帮助。

namespace COMP_SCI_2
{
    public partial class staff_createacc : Form
    {
           
        public staff_createacc()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
          
            string[]DATAINPUT = { IDBOX.Text ,TITLEBOX.Text,FORENAMEBOX.Text,SURNAMEBOX.Text,DATEBOX.Text,STREETBOX.Text,TOWNBOX.Text,POSTCODEBOX.Text,PHONEBOX.Text,EMAILBOX.Text,POSITIONBOX.Text,PASSWORDBOX.Text };

        dataSet2.STAFF.Rows.Add (DATAINPUT);
        this.sTAFFTableAdapter.Update(this.dataSet2);
        }
yr9zkbsy

yr9zkbsy1#

如果添加了一行,那么您再次运行应用程序以显示数据,但什么也没有显示。这听起来像是数据库驻留在应用程序文件夹中。
数据库属性Copy to Output Directory的默认值为Copy always,这意味着每次应用运行时都会覆盖数据库。您需要将Copy to Output Directory更改为Copy if newer
请参阅以下Microsoft TechNet article

编辑发布此帖子时未看到包含相同信息的其他帖子。

0h4hbjxa

0h4hbjxa2#

本机数据档在.NET项目中以特定方式运作。当您将数据档(例如MDF或ACCDB)加入至项目时,即为原始程式档。它是项目的一部分,而不是应用程序的一部分。当您建置项目时,输出会写入文件夹。该输出包含已编译的EXE,而且其中可能包含原始程式数据库的复本。
默认情况下,每次编译新的EXE时都会创建一个新的数据库副本。这意味着,如果您运行项目并修改数据库,然后更改代码并再次运行项目,您的更改将被源数据库的新副本覆盖。如果您再次运行项目而不更改任何代码,您将看到数据更改已保留。
在[方案总管]中,您的数据档有一个[复制到输出目录]属性,而且预设会设定为[永远复制]。这表示每次建置时,都会将来源数据库复制到工作数据库。如果您将此属性变更为[较新时复制],则只有在您变更来源数据库(例如变更结构描述或初始数据)时,才会覆写工作数据库。如此一来,您在测试时所做的任何更改都将在构建中保持不变,并且当您希望强制刷新时,您可以手动删除工作文件。
为了记录在案,这样做的原因是为了你的源数据库不会被你的测试数据污染。如果允许这种情况发生,你必须在部署之前清理它。它的实现方式是,你只需更改到Release,点击Build,你的Release输出文件夹就会被一个干净的数据库填充,准备部署给你的用户。

相关问题