很多情形下我们需要知道表的主键是什么。在ado.net中提供了datatable可以映射数据库的表。于是便可以利用datatable的属性primarykey,它是datacolumn[] 类型是一个数组。我们可以使用如下的代码
datacolumn[] cols;
cols = table.primarykey;
//注意不是cols是datacolumn数组,不是datacolumn变量。这样做主要是为了处理联合主键的问题。
for(int i = 0; i < cols.length; i++)
{
messagebox.show(cols[i].columnname);
}
按理这个问题就已经解决了,但是cols.length却是0。原来在默认的情况下填充datatable时并没有从数据库中取的主键的信息。如何获得主键呢?经过研究发现在填充dataset的时候可以使用dataadapter的missingschemaaction属性帮助我们解决这个问题,于是有如下的代码:
//使用dataadapter填充datatable
dataadapter.missingschemaaction = missingschemaaction.addwithkey;
dataadapter.fill(table);
datacolumn[] cols;
cols = table.primarykey;
//注意不是cols是datacolumn数组,不是datacolumn变量。这样做主要是为了处理联合主键的问题。
for(int i = 0; i < cols.length; i++)
{
messagebox.show(cols[i].columnname);
}
这样我们便可以如愿以偿了。missingschemaaction属性是确定现有dataset(或datatable)架构与传入数据不匹配时需要执行的操作。missingschemaaction.addwithkey是枚举值,它的作用是添加必需的列和主键信息以完成架构,利用它用户可以在每个 datatable上显式设置主键约束。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器