发布者:管理员
发布时间:2010-8-20 17:33:48
阅读:211次
TableMappings:
表名映射:
调用SqlDataAdapter对象Fill方法过程的数据库连接的打开与关闭
SqlDataAdapter的Fill方法调用前不需要有活动的SqlConnection对象,SqlDataAdapter会自己打开strConn语句中的数据库,获取查询结果后,关闭与数据库的连接。如果已经存在SqlConnection对象,无论是否已经打开,SqlDataAdapter执行完Fill方法后,均会将SqlConnection对象返回到原始状态。
当程序中的多个SqlDataAdapter对象使用都一个SqlConnection对象时,为避免多次打开与关闭SqlConnection对象,应该在调用SqlDataAdapter的Fill方法前调用SqlConnection的Open方法打开数据库的连接,待完成Fill调用后再调用SqlConnection的Close方法关闭数据库的连接。
DataSet中数据的更新
TableMappings:
表名映射:
生成dataAdapter之后再进行表名映射
dataAdapter.TableMappings.Add("Table","Customer")
dataAdapter.Fill(dataSet)
这时Table的别名就变为Customer(对dataSet用Table或Customer操作都可以),dataSet.Tables("Customer")就可以引用到这个表
或
例子(绑定到DataGrid)
TableMappings映射
TabbleMappings集合控制SqlDataAdapter如何将DataSet映射到数据库。如果保持TabbleMappings集合为空,调用Fill方法,然后将DataSet作为参数,而不指定表名,SqlDataAdapter将假定您希望使用一个名为“Table”的DataTable来装载数据。
SqlDataAdapter.TableMappings.Add(“Table”,”Employees”)
此语句的作用是将DataSet中原来名字为“Table”的DataTable命名为“Employees”,DataSet填充数据时,按查询结果集的顺序依次填充DataSet中的Table、Table1、Table2……,所以给DataTable命名时需留意该DataTable是否为当前将要使用的对象。
TableMappings和ColumnMappings的AddRange方法
构造并赋值DataTableMapping、DataColumnMapping数组,再调用它们的AddRange方法将该集合整体添加到映射数组。 DataTableMapping tableMap;
dataAdapter.TableMappings.Add("ADONET","Customer")
dataAdapter.Fill(dataSet,"ADONET")
列名映射:
dataAdapter.TableMappings.Add("Table","Customer")
dataAdapter.TableMappings("Customer").ColumnMappings.Add("CustomerID","ID)
dataAdapter.FIll(dataSet,"Customer")
在dataAdapter中添加表名映射后,相对有两个表,一个表是原先的表,另一个表是映射后的表,列名也经过相应的映射,因此在Fill时要 指定是哪个表,否则显示的时候就不会显示映射后的列名。另外在表名映射后,在数据绑定时只能指定dataMember为Student。
MissingMappingAction属性
当SqlDataAdapter提取查询结果来填充DataSet时,它将检查TableMappings集合,如果存在结果集中列不在TableMappings集合时,它将查看MissingMappingAction属性的值来决定如何操作。
adapter.TableMappings.Add("Table", "Virtual_Paragraph");
command = new OleDbCommand
("SELECT ID, ArticleID, ParagraphOrder,ParagraphContent,ParagraphType FROM virtual_Paragraph", connection);
command.CommandType = CommandType.Text;
adapter.SelectCommand = command;
adapter.Fill(XGroupDataSet);
// 读ARTICLE_REPLACE_OPTION表
adapter = new OleDbDataAdapter();
adapter.TableMappings.Add("Table", "Virtual_Article_Replace_Class");
command = new OleDbCommand
("SELECT ID, ClassCType, ClassName, ClassCName,ClassChangeOption FROM Virtual_Article_Replace_Class", connection);
command.CommandType = CommandType.Text;
adapter.SelectCommand = command;
adapter.Fill(XGroupDataSet);
// 读WEBSITE表,建立客户表。注意:与别的不同,数据库中没有单独的客户表,且仅有一列
adapter = new OleDbDataAdapter();
adapter.TableMappings.Add("Table", "Client");
command = new OleDbCommand
("SELECT DISTINCT WebSite FROM Client_WebChannel", connection);
command.CommandType = CommandType.Text;
adapter.SelectCommand = command;
adapter.Fill(XGroupDataSet);
// 读WEBSITE表
adapter = new OleDbDataAdapter();