上篇文章我们介绍了如何利用DataSet 和 DataAdaper对象来对单张表进行操作。

本文我们将介绍如何进行跨表操作。

我们通过具体例子方式进行演示,例子涉及到三张表。

1)student表(学生信息表),有 studentno和studentname两个字段,其中studentno是关键字

2)course表(课程表),有 courseno和coursename两个字段,其中courseno是关键字

3)score表(学生课程考试得分表),有 studentno,couseno,score三个字段,其中studentno,couseno组合为关键字。

例子代码如下:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms; namespace DbExample
{
class ActorMoreTable
{
public void fetchData()
{
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = null;
SqlConnection conn = getConnection();
try
{
conn.Open();
string sql = "select course.courseno as courseno,coursename,student.studentno as studentno, studentname,score " +
"from score ,student,course "+
"where score.courseno = course.courseno and score.studentno = student.studentno";
adapter = new SqlDataAdapter(sql, conn); adapter.InsertCommand = new SqlCommand(
"insert into score(studentno,courseno,score) values(@studentno,@courseno,@score)", conn);
adapter.InsertCommand.Parameters.Add("@studentno", SqlDbType.Int, , "studentno");
adapter.InsertCommand.Parameters.Add("@courseno", SqlDbType.Int, , "courseno");
adapter.InsertCommand.Parameters.Add("@score", SqlDbType.Int, , "score"); adapter.Fill(dataSet, "score");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作失败");
}
finally
{
conn.Close();
}
updateData(dataSet, adapter);
MessageBox.Show("操作成功");
} private void updateData(DataSet dataSet, SqlDataAdapter adapter)
{
DataTable table = dataSet.Tables["score"];
object[] values = new object[] { , null, , null, };
table.Rows.Add(values);
adapter.Update(dataSet, "score"); //同步到数据库
} private SqlConnection getConnection()
{
string strConnection = @"Data Source = localhost\SQLEXPRESS; Initial Catalog = mydb; User Id = sa; Password = 12345678;";
SqlConnection conn = new SqlConnection(strConnection);
return conn;
}
}
}

上面代码,我们绑定了一个insert命令。可以看出,关键就是将需要更新的字段与对应的dataset中的字段关联。

c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--跨表操作)的更多相关文章

  1. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)

    一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...

  2. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

  3. 《天书夜读:从汇编语言到windows内核编程》八 文件操作与注册表操作

    1)Windows运用程序的文件与注册表操作进入R0层之后,都有对应的内核函数实现.在windows内核中,无论打开的是文件.注册表或者设备,都需要使用InitializeObjectAttribut ...

  4. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  5. 吴裕雄--天生自然JAVA数据库编程:处理大数据对象

    import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import j ...

  6. 基于对象的orm跨表查询再练习

    model.py from django.db import models # Create your models here. class Book(models.Model): nid = mod ...

  7. C#-VS SQLServer数据库编程-摘

    ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) comma ...

  8. Vc数据库编程基础MySql数据库的常见库命令.跟表操作命令

    Vc数据库编程基础MySql数据库的常见操作 一丶数据库常见的库操作 1.1查看全部数据库 命令:  show databases 1.2 创建数据库 命令: Create database 数据库名 ...

  9. 零基础学Python--------第11章 使用Python操作数据库

    第11章 使用Python操作数据库 11.1 数据库编程接口 在项目开发中,数据库应用必不可少.虽然数据库的种类有很多,如SQLite.MySQL.Oracle等,但是它们的功能基本都是一样的,为了 ...

随机推荐

  1. 针对PCB飞针测试快速有效的技巧

    测试探针通过多路传输(multiplexing)系统连接到驱动器(信号发生器.电源供应等)和传感器(数字万用表.频率计数器等)来测试UUT上的元件.当一个元件正在测试的时候,UUT上的其它元件通过探针 ...

  2. ThinkPHP 3.1.2 视图-2

    一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) 更换模板文件 ...

  3. 概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯

    之前忘记强调了一个重要差别:条件概率链式法则和贝叶斯网络链式法则的差别 条件概率链式法则 贝叶斯网络链式法则,如图1 图1 乍一看非常easy认为贝叶斯网络链式法则不就是大家曾经学的链式法则么,事实上 ...

  4. ActionScript3游戏中的图像编程(连载十七)

    总文件夹:http://blog.csdn.net/iloveas2014/article/details/38304477 1.3.3 HSB与RGB之间的互转公式及HSL和HSV对色彩属性理解的异 ...

  5. 转载 js判断浏览器

    $scope.identifyBrowser= function () { var userAgent = navigator.userAgent, rMsie = /(msie\s|trident. ...

  6. 第10季asp.net基础

    什么是ASP.Net: ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML.可以使用javascript.Dom在浏览器端完成很多工作,但是有很多工作无法在浏览器端完成,比 ...

  7. JavaSE学习总结第09天_面向对象4

      09.01 final关键字引入 例: class Fu { public final void show() { System.out.println("访问底层资源"); ...

  8. Java中有关日期的一些常见运算与应用(Date,DateFormat,SimpleDateFormat)

    import java.text.DateFormat; import java.text.DateFormat; import java.text.SimpleDateFormat; import ...

  9. BZOJ 1880: [Sdoi2009]Elaxia的路线( 最短路 + dp )

    找出同时在他们最短路上的边(dijkstra + dfs), 组成新图, 新图DAG的最长路就是答案...因为两人走同一条路但是不同方向也可以, 所以要把一种一个的s,t换一下再更新一次答案 ---- ...

  10. MongoDB学习笔记1(简介)

    一.简介                 1.丰富的数据类型         MongoDB是一种非关系型数据库,是面向文档的数据库.         MongoDB没有模式,文档的键不会事先定义,也 ...