从两个 SQL 表中选择并插入.C#
本文关键字:选择 插入 SQL 两个 | 更新日期: 2023-09-27 18:33:02
我的代码 dosent 工作。 请纠正我。
我想说的例子是从 (COlumn*( 中取 2 个值,其中....和 (COlumn*( 中的 2 个值,其中 ....
con.Open();
SqlCommand cmd = new SqlCommand
("INSERT INTO temp_rent(parts,size,color,quantities,barcode,name,mobile,code) select
parts,size,color,quantities,barcode from inventory where barcode = ('" + textBox4.Text + "')
select name,mobile,code from customermaster where code= '" + textBox1.Text + "')", con);
cmd.ExecuteNonQuery();
con.Close();
这是我的方法:
首先在Visual Studio(2015(中,我添加了一个数据源。请注意,不同版本的 Visual Studio 有不同的添加数据源的方式。所以在VS2015中点击
- 项目
- 添加新的数据源数据库
- 数据
- 配置与数据库的连接
- 选择表 您将使用的语言
- 命名数据集(我的是SO_testDataSet(
完成后,您将有一个...项目中的 DataSet.xsd。双击它。
在这里,您将看到从数据库中导入的表。 右键单击 temp_rent 的标题,因为 您要创建一个将在末尾插入到temp_rent中的查询。
- 加
- 查询
- 在这里,您可以使用"使用 SQL 语句"或"创建新的存储过程"。我建议第二个,但为了简单起见,现在使用第一个。
- 插入
-
将以下内容粘贴到文本框中。如果您愿意,可以在查询构建器中检查它。
INSERT INTO temp_rent (parts, size, color, quantities, barcode, name, mobile, code) SELECT i.parts, i.size, i.color, i.quantities, i.barcode, cm.name, cm.mobile, cm.code FROM inventory AS i CROSS JOIN customermaster AS cm WHERE (cm.code = @code) AND (i.barcode = @barcode)
-
命名你的查询(我的是插入查询(
完成,保存。在查询中,您可以看到存在交叉联接,因为库存和主客户群未通过列联接。这是一个简单的笛卡尔产品。您也可以使用FROM inventory, customermaster
或FROM inventory JOIN customermaster
(因为ON
是可选的(。我们还可以看到@code
和@barcode
是参数化查询的占位符。
在代码中,您可以像这样使用添加的查询:
SO_testDataSetTableAdapters.temp_rentTableAdapter adapter = new SO_testDataSetTableAdapters.temp_rentTableAdapter();
// I assume that code and barcode are the type of int in the database.
adapter.InsertQuery(int.Parse(textBox1.Text), int.Parse(textBox4.Text));
如果文本框包含一些恶意字符串,则int.Parse
将抛出异常,因为恶意字符串无法解析为 int(为了防御 sql 注入(。