2014-03-19 24 views
-1

我有两列1.订单和2 Billing_address这里是我的表结构如何将表单列值插入到sql server 2012中的另一个表列中?

[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

你需要得到链接到帐单地址从你的ASP页面将订单。在继续阅读关于Sql注入之前 – Steve

+0

'我有两列1.订单和2. Billing_address'。你的意思是两张桌子? '执行此查询后出现错误'。那个错误是...? – LittleBobbyTables

+0

不知道我该怎么做:( –

回答

0

你的语法是错误的,你实际上并没有选择从Orders表的订单ID,你得到所有的人;为了这个工作,你需要添加一个WHERE到那个SELECT。无论如何,因为你实际上插入了一个全新的数据行,只有订单ID需要匹配,子查询可能不适合这项工作。

你应该先得到你处理订单的订单ID(你可能已经在你的应用程序中使用,但如果没有,那么就看看它);然后使用已有的新值和订单ID做一个简单的INSERT。

并请使用存储过程这一点,或至少是一定要净化你的投入。
你永远不应该直接将用户输入到数据库中。

相关问题