本人初用VS2008 + VS自带的SQL Server 2005 Express开发一个WinForm应用程序,需要操作数据库存取。
  具体步骤是:开始时用的是“服务资源管理器”图形化创建了了一个laboratory.mdf文件,用的是windows身份登录,在里面建立了两张表student和attendance,并添加了几个元组用来测试,使用了“设计器”配置了二者对应的TableAdapter里面所需要的查询操作(使用向导写的SQL语句),得到了向导生成的一些如studentTableAdapter.InsertQuery(@name...),studentTableAdapter.UpdateQuery(@name,...)之类的函数,经试验正确;在主界面MainForm里加了个DataGridView控件,用来显示。
  现在问题是:调试时在应用程序里调用这些函数如studentTableAdapter.InsertQuery(@name..),参数是控件的text属性,完成数据的插入,又调用了studentTableAdapter.fill()更新DataGridView和studentTableAdapter.update()更新数据源,在DataGridView里均能正常显示刚插入的元组,比如是A,也没有别的问题,断点调试时也见到了新元组A被插入到了student表里,可是如果重启,或修改界面以后,在程序里插入的A元组就没了,只剩下了建立student表时的那几个测试元组,好像是没有写到laboratory.mdf文件里,也就是在dataSet里的数据操作正常(因为DataGridView里正常显示了),但没有保存至mdf文件,后来照BindingNavigator里写了如下几行代码也不行:
this.Validate();
this.studentTableBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.laboratoryDataSet);
看了MSDN上的说明http://msdn.microsoft.com/zh-cn/library/ms171933(v=vs.90).aspx好像也就是用Update函数,我就不知道为什么了,不太清楚是不是少了什么,衷心希望各位指点迷津,感激不尽!