从一个表中选择一个值,将该行的id插入到asp.net中的另一个

时间:2013-05-06 06:15:15

标签: c# asp.net tsql ado.net

我正在我的项目中尝试最简单的插入实现,以便向我未来的雇主展示。我知道我应该把它放在另一层并称之为等等但我老实说没有足够的时间,我还是需要学习如何以简单的方式做到这一点。

我已经将“@username”存储在SESSION [“USER”]中,现在我需要在表中插入ORDERS数量和产品ID,而产品名称是在PRODUCTS表中。

我已经在下拉列表中列出了产品名称,因此USER选择了值,键入了金额,然后点击了BUY,它将ORDER存储在数据库中。

查询此SQL命令的正确方法是什么? 我在想SqlCommand可以解决这个问题,但我还是不太确定如何使用它。

数据库中的示例:

CREATE TABLE ORDERS
(
_OrderID int not null identity (1,1) primary key,
_Date datetime null,
_Quantity bigint null,
_ProdID int foreign key references PRODUCTS (_ProductID),
_UserID int foreign key references USERS (_UserID)
)
GO


CREATE TABLE PRODUCTS
(
_ProductID int not null identity(1,1) primary key,
_ProdName nchar (200) null,
_StockUnits int,
_SuppID int foreign key references SUPPLIERS (_SuppID)
)
GO

CREATE TABLE USERS
(
_UserID int not null identity(1,1) primary key,
_UserEmail varchar (35) null,
_UserName varchar (30) not null,
_UserPass varchar (30) not null,
_Name varchar (100),
_Phone varchar (20) null,
_Address varchar (150) null,
_Authority int not null,
_Special bit null
)
GO

 protected void btnBuy_Click(object sender, EventArgs e)
        {
           //obviously incomplete.
            string usrQuery = Session["NOMUSU"].ToString();
            SqlConnection oConnection = new SqlConnection("Server=.\\SQLExpress;AttachDbFilename=L:\\Apps\\VS Projects\\Carnisoftix\\CarniDb.mdf;Database=CarniDb;Trusted_Connection=Yes;");
            SqlCommand oCom = new SqlCommand("INSERT INTO ORDERS _Date, _Quantity VALUES " + " (" + DateTime.Now.ToString("yyyy-mm-dd HH:mm:ss") + ", "+ txtAmount.Text 
        }

PD:我应该为这个简单的任务制作一个存储过程吗?

1 个答案:

答案 0 :(得分:1)

问题的关键在于你的陈述:

  

我已经在下拉列表中列出了产品名称

当您构建该下拉列表时,您可以添加Id产品并将其用作下拉列表中的值,以便您可以使用以下内容:

<select>
    <option value="1">Apple</option>
    <option value="2">Banana</option>
    <option value="3">Orange</option>
</select>

然后在代码隐藏中传递/获取该值,类似于从txtAmount获取金额的值。以这种方式,您不必按名称查询products表,只是为了获取_ProductID,因此您可以将其插入ORDERS表。