用SqlDataAdapter.Fill的方法得到的dataset或者datatable好像都没有主键,
物理表是有主键的
SqlDataAdapter SDA = new SqlDataAdapter(TS,SC);
DataTable DTD = new DataTable(TableName);
SDA.Fill(DTD);调用DTD.Rows.Find()方法时报错:
System.Data.MissingPrimaryKeyException: 表没有主键。
   at System.Data.DataTable.CheckPrimaryKey()
   at System.Data.DataTable.FindByPrimaryKey(Object[] values)
   at System.Data.DataRowCollection.Find(Object[] keys)
   at ServerSystem.ServerSystem.StoreData(Byte[] pData) in e:\work\serversystem\serverform.cs:line 994怎么样才能得到完整的表,包括数据,结构和约束。

解决方案 »

  1.   

    如果你用标准的DataSet来操作,如果你数据库表中有主键,则读出来后DataSet中也有主键
      

  2.   

    这样读出来的是没有主键的!你可以在Find之前设置一下内存表的主键呀!
      

  3.   

    怎么用标准的DataSet来操作,怎么设置主键,能具体讲讲吗?是一组表,还有变化,设置主键恐怕有些麻烦
      

  4.   

    最简单的办法,所有表都增加一个 自动增长列 id 设置主键.就OK了.