gpt4 book ai didi

c# - 插入具有外键约束的表

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:33 27 4
gpt4 key购买 nike

我已经阅读了一些关于此的内容并提出了以下代码。我正在使用 Access 数据库并通过 Visual Studio 在 C# 中编码。

我遇到了一个语法错误。我试图在 Access 中创建一个查询来测试它,但很难在其中创建它。

谁能帮我弄清楚为什么这不起作用?

using(OleDbConnection conn1 = new OleDbConnection(global::InsulationProjectTracker.Properties.Settings.Default.InsulationDB))
{
using(OleDbCommand command1 = conn1.CreateCommand())
{
conn.Open();

command.CommandText = "INSERT INTO Jobsites (CustomerID, JobsiteName) VALUES ((SELECT Customers.CustomerID FROM Customers WHERE Customers.CustomerName = @cname1 AND Customers.BranchNumber = @bNumber1), @jName1)";
command.Parameters.Add(new OleDbParameter("@cName1", cboCustomerName.Text));
command.Parameters.Add(new OleDbParameter("@bNumber1", cboBranch.Text));
command.Parameters.Add(new OleDbParameter("@jName1", txtJobsiteName.Text));

command.ExecuteNonQuery();

conn.Close();
command.Parameters.Clear();

}
}

表格设置

分支机构

PK 分支编号
分支名称

客户

PK CustomerID
客户姓名
FK 分行号

工作地点

PK JobsiteID
工作地点名称
FK 客户 ID

编辑***

下面的命令没有产生错误,但也没有向数据库中插入数据

command.CommandText = "INSERT INTO Jobsites (CustomerID, JobsiteName) SELECT @jName1, c.CustomerID FROM Customers c WHERE c.CustomerName = @cname1 AND c.BranchNumber = @bNumber1";

最佳答案

Access SQL 不接受目标表的别名。

例如,这些语句中的任何一个都会触发“INSERT INTO 语句中的语法错误。” ...

INSERT INTO Jobsites j (j.CustomerID, j.JobsiteName) VALUES (1, 'foo');
INSERT INTO Jobsites AS j (j.CustomerID, j.JobsiteName) VALUES (1, 'foo');

没有别名,这个执行没有错误...

INSERT INTO Jobsites (CustomerID, JobsiteName) VALUES (1, 'foo');

为了获得 Access 将接受的查询,我认为您可能需要切换到 INSERT ... SELECT 而不是 INSERT ... VALUES .. .

command.CommandText = "INSERT INTO Jobsites (CustomerID, JobsiteName) SELECT c.CustomerID, @jName1 FROM Customers AS C WHERE c.CustomerName = @cname1 AND c.BranchNumber = @bNumber1";

基本上是 @ConradFrix 之前建议的,但没有 Jobsites 表的别名。

关于c# - 插入具有外键约束的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597740/

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