【发布时间】:2015-07-23 20:47:21
【问题描述】:
我已经阅读了一些关于此的内容并提出了以下代码。我正在使用 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 客户 ID
客户名称
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";
【问题讨论】:
-
请清理你的代码缩进。
-
您能否包括您的语法错误以及 Jobsites、Customers 的架构?谢谢
-
参数名称区分大小写。
-
I am getting a syntax error...尝试在INSERT INTO Jobsites之后和(j.Custome.....)之前删除j -
@SamAxe 不,在 OleDB 中,它们不是。实际上,它们都被替换为 ?在幕后。 OleDB 在分配参数值时使用索引优先级。所以用户可以在每个参数行中使用
new OleDbParameter("?",。
标签: c# database ms-access foreign-key-relationship sql-insert