gpt4 book ai didi

c# - 如何结合 SQL 查询使用 TableAdapterManager 和相关数据表

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:52 24 4
gpt4 key购买 nike

我有一个关于如何正确使用相关数据表以及如何在后端源数据库中正确实现它们的问题。

情况如下:

  1. 我有一个 SQL 数据库 (SQL Server),它是基本数据源。在这里,表可以通过外键相互关联。

  2. 我使用这个 SQL 数据库通过 SQL 查询来填充数据表。我使用生成的数据表来可视化公式中的信息

var query = new SqlCommand(_sqlquery, connection);
var sqlAdapter = new SqlDataAdapter(query);
sqlAdapter.Fill(dataTable);

...

例如,我在这里使用 sql 查询将所需信息获取到我的数据表中:

SELECT * FROM [order] INNER JOIN customer ON [order].customerID = customer.customerID;

到目前为止,数据网格中的可视化效果很好。

但是当试图将对数据网格中可视化数据的修改保存回源 sql 数据库时,问题越来越多。

在网上查了很多,好像是使用TableAdapterManager解决的。问题是我真的不明白如何连接我的代码我已经用 TableAdapterManager 可视化了数据,它可以在 sql 数据库中实现数据。

最佳答案

让我添加另一个答案 - 逐步解释会很容易。我会在需要时编辑/添加更多详细信息。

1. 从创建新数据集开始,添加您需要的数据表。添加新的表适配器 - 它还将根据您的或默认查询创建数据表。 Tableadapter 可能有很多查询 - 它们用于从 db 填充数据表。

从简单的查询开始:

select * from customers

select *, computedField1 = 'abc', computedField2 = 123 
from customers
where 1=0

这个“第一个”查询是“假的”(“where 1=0”告诉你它永远不会被使用)并且是声明性的,来自单个表,没有参数。通常你永远不会检索所有没有参数或连接的数据。此查询“允许”设计者创建结构和更新语句,识别主键。

然后添加另一个查询:

按编号填充

select * 
from customers
where custId = @custId

按名称填写

select * 
from customers
where custname like (@ss + '%')

按最近填充

select cc.*
from customers cc
inner join orders oo on cc.custId = oo.custId // get only customers with orders
where oo.orderdate > @dtFrom

您将在代码中调用它们:

taCustomer.FillByName(ds.customers, "AAA");    // all started from "AAA"

对订单做同样的事情

2.建立关系

单击 Customer 中 custId 列之前的灰色区域 - 它将选择列。将选中的拖放到 Orders 中的 custId 上

3.添加表单

编译后,您的数据集将添加到“数据源”窗口。选择您的表单,将客户从“数据源”窗口拖到您的表单中——它将创建 grig 并向表单添加组件:数据集、绑定(bind)源、tableadapter。

也添加订单。

查看网格中的属性“datasource”和“datamember”,以及绑定(bind)源:

  • bsCustomer 指的是 ds - 客户
  • bsOrders 将引用客户 - customers_orders_relation

4.加载/更新

form_load() 中调用

taOrders.FillBySomething(ds.orders, ...)
taCustomer.FillByAnotherSomething(ds.customers, ...);

在保存按钮下

taOrders.Update(ds.orders); // will update only modified content
taCustomer.Update(ds.customers);

关于c# - 如何结合 SQL 查询使用 TableAdapterManager 和相关数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com