- 使用VS自动生成DataSet (强类型)
- 添加→新建项→数据集
- 将表(表必须有主键)从服务器资源管理器拖放到DataSet中(拖放过程根据表单结构自动生成强类型DataSet等类/并没有将数据拖过来/并自动数据库连接写在App.Config中)
- 常见问题: 类内部定义的类要通过包含namespace的全名来引用(不能省略)/类内部定义类就能避免同一namespace下类不能重名的问题
- 服务器连接(ConnectionString): 数据连接(服务器资源管理器中)右键→添加连接(本地/异地数据库服务器及数据库)/T_UserTableAdapter的Connection属性: 显示连接信息
- 服务器连接(ConnectionString)的修改: ①App.Config②Properties.Settings
- DataSet(强类型)
- 生成与数据库交互的类(类名: 表名+类名)
- T_User→T_UserTableAdapter→项目名.数据集.T_UserDataTable
- T_UserTableAdapter.GetData()方法: 获得T_UserDataTable
强类型DataSet1.DataSetPersons
强类型DataSet1.DataSetPersons.T_PersonsDataTable
强类型DataSet1.DataSetPersons.T_PersonsRow
强类型DataSet1.DataSetPersonsTableAdapters.T_PersonsTableAdapter
强类型DataSet1.DataSetPersonsTableAdapters.TableAdapterManager
…
//拖动时生成namespace: 强类型DataSet1.DataSetPersonsTableAdapters{} 故T_PersonsTableAdapter可直接使用/而T_PersonsDataTable定义在DataSetPersons类内部 所以需要引用全名
- DataSet(强类型)的更新
- T_PersonsTableAdapter.Update(): 更新(要求表必须有主键)
- 设主键 DataSet(强类型)自动生成T_PersonsTableAdapter.UpdateCommand/.DeleteCommand/.InsertCommand等
- 服务器资源管理器中的表有改动时DataSet(强类型)的同步: ①删掉重新拖拽②DataSetT_Persons.xsd(视图)中T_Persons上右键→配置(查询生成器/完成)
- Update/GetData/Insert/Delete:
T_PersonsTableAdapter.Update()
T_PersonsTableAdapter.GetDate()
T_PersonsTableAdapter.Insert(“jim”,20)
T_PersonsTableAdapter.Delete(id,name,age)
- DataSet(强类型)空值判断: T_PersonsRow.IsNameNull //bool类型
- DataSet(强类型)增加自定义SQL语句
- DataSetT_Persons.xsd(视图)中T_Persons右键→添加→Query→使用SQL语句→select(返回行)/select(返回单值)/update/delete/insert→生成新的方法
- 方法的参数: SQL中@参数
- 调用: T_PersonsTableAdapter.新方法名()
- DataSet(强类型)原理之Connection
- DataSet(强类型)默认每次调用方法都打开 操作 关闭连接(打开之前检查是否为打开 是则不再打开/操作完成之后检查打开之前是否为打开 是则不再关闭)
- 手动打开 关闭连接(T_UsersTableAdapter.Connection.Open): 对于批量操作将大量节省时间