原文链接

   da.SelectCommand.CommandText="select au_id,au_fname,au_lname from authors";
da.Fill(ds,"Author");
da.SelectCommand.CommandText="select au_id,title_id from titleauthor";
da.Fill(ds,"TitleAuthor");
da.SelectCommand.CommandText="select title_id,title from titles";
da.Fill(ds,"Titles");
//
ds.Tables["Titles"].Columns["title_id"].Unique=true;
ds.Tables["Titles"].Columns["title_id"].AllowDBNull=false;
ds.Tables["Titles"].PrimaryKey=new DataColumn[]{ds.Tables["Titles"].Columns["title_id"]};
//
ds.Tables["Author"].Columns["au_id"].Unique=true;
ds.Tables["Author"].Columns["au_id"].AllowDBNull=false;
ds.Tables["Author"].PrimaryKey=new DataColumn[]{ds.Tables["Author"].Columns["au_id"]};
//
ds.Tables["TitleAuthor"].PrimaryKey=new DataColumn[]{ds.Tables["TitleAuthor"].Columns["au_id"],
ds.Tables["TitleAuthor"].Columns["title_id"]};
//定义约束
ForeignKeyConstraint fk1=new ForeignKeyConstraint("authorstitleauthor",ds.Tables["Author"].Columns["au_id"],
ds.Tables["TitleAuthor"].Columns["au_id"]);
ds.Tables["TitleAuthor"].Constraints.Add(fk1);
ForeignKeyConstraint fk2=new ForeignKeyConstraint(
"titlestitleauthor",ds.Tables["Titles"].Columns["title_id"],
ds.Tables["TitleAuthor"].Columns["title_id"]);
ds.Tables["TitleAuthor"].Constraints.Add(fk2);
this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="TitleAuthor";

这样设定外键之后,在DataGrid上编辑TitleAuthor中的记录时如果编辑的记录不在Title和Author中时将后无法更新和新增.

最新文章

  1. 学习django之构建Web是Meta嵌套类的几处使用
  2. 东大OJ-最大子序列问题的变形
  3. WinForm------Reflector反编译工具下载
  4. 再谈对协变和逆变的理解(Updated)
  5. leetcode 83
  6. JVM中java类的加载时机(转载:http://blog.csdn.net/chenleixing/article/details/47099725)
  7. datediff(),dateadd(),datepart().datename()时间处理函数
  8. [Python]小笔记-queue
  9. 简单的http代理服务器
  10. iOS开发UITableView基本使用方法总结
  11. ES6中的迭代器(Iterator)和生成器(Generator)
  12. 简述C/C++调用lua中实现的自定义函数
  13. [收藏] Java源码阅读的真实体会
  14. Mysql之视图的操作
  15. hadoop的企业优化
  16. git心得
  17. Android 學習之旅!(1)
  18. QLabel-标签控件的应用
  19. Python字符串和编码
  20. Spring 注解 hibernate 实体方法 <property name="packagesToScan" value="com.sise.domain"/>

热门文章

  1. A Practical Introduction to Blockchain with Python
  2. HTML——使用表格进行页面布局
  3. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )
  4. lucene 5的测试程序——API变动太大
  5. skynet源码阅读<3>--网关分析
  6. 3.9-3.10 分布式协作服务框架Zookeeper
  7. KDotAlert
  8. Android 实用技巧 --- 命令godir (转载)
  9. React 从入门到进阶之路(八)
  10. C++开发工程师面试题库 50~100道