我有两列1.订单和2.这里的Billing_address是我的表结构
[OrderID] INT IDENTITY (1, 1) NOT NULL,
[CustomerName] NVARCHAR (256) NOT NULL,
[OrderDate] DATETIME CONSTRAINT [DF_Orders_OrderDate] DEFAULT (getdate()) NOT NULL,
[ShipDate] DATETIME CONSTRAINT [DF_Orders_ShipDate] DEFAULT (getdate()) NOT NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY NONCLUSTERED ([OrderID] ASC)
这是我的Billing_address表结构:
[b_id] INT IDENTITY (1, 1) NOT NULL,
[bname] NVARCHAR (50) NOT NULL,
[baddress] TEXT NOT NULL,
[bcity] NVARCHAR (50) NOT NULL,
[bzip] NUMERIC (18) NOT NULL,
[bcountry] NVARCHAR (50) NOT NULL,
[bphone] NUMERIC (18) NOT NULL,
[bfax] NVARCHAR (50) NULL,
[OrderID] INT NOT NULL,
CONSTRAINT [PK_Billing_address] PRIMARY KEY CLUSTERED ([b_id] ASC),
CONSTRAINT [FK_Billing_address_Orders] FOREIGN KEY ([OrderID]) REFERENCES [dbo].[Orders] ([OrderID])
我将用户提供的表单数据插入到Billing_address表中,Billing_address表有一个列名OrderID我想从Orders表列OrderID值插入此列,这里是我的插入查询代码:
com.CommandText = "Insert Into Billing_address(bname,baddress,bcity,bzip,bcountry,bphone,bfax,OrderID) SELECT ('" + name.Text + "','" + address.Text + "','" + city.Text + "','" + zip.Text + "','" + country.SelectedValue + "','" + phone.Text + "','" + fax.Text + "', OrderID FROM Orders";
执行此查询后出现错误,我已经解释了上面的内容,我认为这个查询不符合我的要求,请帮我实现我的要求,提前谢谢。
答案 0 :(得分:0)
您的语法错误,您实际上并没有从Orders表中选择OrderID,而是获得所有这些;要使其工作,您需要向该SELECT添加WHERE。无论如何,既然你实际上是在插入一个全新的数据行而只需要匹配订单ID,那么子查询可能不适合这项工作。
您应首先获得您正在处理的订单的订单ID(您可能已在应用程序中使用该订单ID,但如果没有,则只需查看);然后使用新值和您已有的订单ID进行简单的INSERT。
请使用存储过程,或者至少确保消毒您的输入 您永远不应该直接将用户输入发送到数据库。