如何将表单列值插入sql server 2012中的另一个表列?

时间:2014-03-19 16:48:17

标签: c# asp.net sql-server

我有两列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"; 

执行此查询后出现错误,我已经解释了上面的内容,我认为这个查询不符合我的要求,请帮我实现我的要求,提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的语法错误,您实际上并没有从Orders表中选择OrderID,而是获得所有这些;要使其工作,您需要向该SELECT添加WHERE。无论如何,既然你实际上是在插入一个全新的数据行而只需要匹配订单ID,那么子查询可能不适合这项工作。

您应首先获得您正在处理的订单的订单ID(您可能已在应用程序中使用该订单ID,但如果没有,则只需查看);然后使用新值和您已有的订单ID进行简单的INSERT。

请使用存储过程,或者至少确保消毒您的输入 您永远不应该直接将用户输入发送到数据库。