如果一个数据库上有个表T,里面有三个属性NO1,NO2,Value
其中NO1 NO2联合作主键。如果把这个表读到DataTable中,根据MSDN的解释,可以反映出NO1,NO2为联合主键的表示是NO1列和NO2列的AllowDBNULL属性为false。但很明显,这无法能保证NO1和NO2联合为主键。仅仅表示他们非空。然而,当我尝试向表里添加(1,2,3)和(1,2,3)两行时,竟然发生异常说NO1,NO2 的主键约束遭到破坏。添加(1,2,3)和(1,3,3)两行时就没事。请问.Net自己凭什么知道哪几个是主键呢?.Net知道的方法我能不能拿来用。
其中NO1 NO2联合作主键。如果把这个表读到DataTable中,根据MSDN的解释,可以反映出NO1,NO2为联合主键的表示是NO1列和NO2列的AllowDBNULL属性为false。但很明显,这无法能保证NO1和NO2联合为主键。仅仅表示他们非空。然而,当我尝试向表里添加(1,2,3)和(1,2,3)两行时,竟然发生异常说NO1,NO2 的主键约束遭到破坏。添加(1,2,3)和(1,3,3)两行时就没事。请问.Net自己凭什么知道哪几个是主键呢?.Net知道的方法我能不能拿来用。
解决方案 »
- c# 字符串中字符排序问题,高手指点!
- 请教页面源代码上是"charset=gb2312",为何GetEncoding("gb2312")仍然读出乱码?谢谢
- 初学求教~我建了一个数据库为student.mdb可是运行程序时为什么提示我没有找到student.mdb呢?
- c#与java通信的问题
- 请教:SqlCommand运行时出错
- 不通过继承或者重写类,屏蔽现有类的方法?
- 我想以一个矩形笔头走一条直线,该怎么实现,注意,以不同方向走线,线宽是不一样的
- 哪位老师知道axWebBrowser中如何实现拖动功能?
- 怎么使Form能像textbox一样得到输入焦点.
- checkBox的属性怎么修改?
- 给客户的项目做完后,软件的版权和著作权属于谁的?
- 我的Sql语句超过8000字符该怎么办?
你理解错了吧....DataTable是你的表T建立主键的.....
运行时你可以跟踪一下DataTable.PrimaryKey属性看一下主键...
DataTable 对象中会有一个称为 Constraints 的属性,该属性描述了数据库表的约束的集合,该集合中存有两种类型的数据:
1、ForeignKeyConstraint - 表示删除或更新某个值或行时,对主键/外键关系中一组列强制进行的操作限制
2、UniqueConstraint - 表示对一组列的限制,列中的所有值必须是唯一的。