2017-10-10 61 views
0

嗨什么是从两个表插入数据到一个表的正确方法,所以他们是3个表,我的第一个表是Tbl_orderOrder_ID和第二个Tbl_CashierCashier_ID和第三个是Tbl_FinalizedOrder_IDCashier_ID。表的全部设计从两个表插入数据到一个表C#

Tbl_Cashier

CREATE TABLE [dbo].[Tbl_Cashier] (
    [Cashier_ID] INT   IDENTITY (1, 1) NOT NULL, 
    [FName]  VARCHAR (50) NOT NULL, 
    [MName]  VARCHAR (50) NULL, 
    [LName]  VARCHAR (50) NOT NULL, 
    [Address] NVARCHAR (50) NOT NULL, 
    [ContactNo] VARCHAR (50) NOT NULL, 
    [Email]  NVARCHAR (50) NOT NULL, 
    [Age]  INT   NOT NULL, 
    [Gender]  VARCHAR (50) NOT NULL, 
    [Password] VARCHAR (50) NOT NULL, 
    [role]  NVARCHAR (50) NULL, 
    PRIMARY KEY CLUSTERED ([Cashier_ID] ASC) 
); 

Tbl_order

CREATE TABLE [dbo].[Tbl_order] (
    [Order_ID] INT   IDENTITY (1, 1) NOT NULL, 
    [CustomerNo] INT   NOT NULL, 
    [OrderName] NVARCHAR (MAX) NOT NULL, 
    [Quantity] INT   NOT NULL, 
    [Price]  FLOAT (53)  NOT NULL, 
    [Serves_way] INT   NOT NULL, 
    [Date]  DATETIME  NOT NULL, 
    PRIMARY KEY CLUSTERED ([Order_ID] ASC), 
    CONSTRAINT [Serves_wayFK] FOREIGN KEY ([Serves_way]) REFERENCES [dbo].[Tbl_Serve] ([Serve_ID]) 
); 

Tbl_Finalized

CREATE TABLE [dbo].[Tbl_Finalized] (
    [Finalized_ID] INT IDENTITY (1, 1) NOT NULL, 
    [Order_ID]  INT NOT NULL, 
    [Cashier_ID] INT NOT NULL, 
    [Customer_ID] INT NOT NULL, 
    PRIMARY KEY CLUSTERED ([Finalized_ID] ASC), 
    CONSTRAINT [CashierFK] FOREIGN KEY ([Cashier_ID]) REFERENCES [dbo].[Tbl_Cashier] ([Cashier_ID]), 
    CONSTRAINT [CustomerFK] FOREIGN KEY ([Customer_ID]) REFERENCES [dbo].[Tbl_Customer] ([Customer_ID]) 
); 

所以当我登录的应用程序,我通过FName参数和密码 我用Tbl_Cashier登录,如何获得Cashier_ID登录并将其插入Cashier_IDTbl_Finalized?这是我的登录代码:

private void but_log_in_Click(object sender, EventArgs e) 
     { 
      if (tbx_username.Text == "" || Tbx_Password.Text == "") 
      { 
       MessageBox.Show("Please provide UserName and Password"); 
       return; 
      } 
      try 
      { 

       using (SqlConnection con = new SqlConnection(connectionString)) 
       using (SqlCommand cmd = new SqlCommand("Select * from 
       Tbl_Cashier where [email protected] and [email protected]", con)) 
       using (SqlDataAdapter adapt = new SqlDataAdapter(cmd)) 

       { 
        con.Open(); 
        cmd.Parameters.AddWithValue("@username", tbx_username.Text); 
        cmd.Parameters.AddWithValue("@password", Tbx_Password.Text); 


          HabibisGrll.Globals.sss = tbx_username.Text; 

        DataSet ds = new DataSet(); 
        adapt.Fill(ds); 
        con.Close(); 
        int count = ds.Tables[0].Rows.Count; 
        //If count is equal to 1, than show frmMain form 
        if (count == 1) 
        { 
         MessageBox.Show("Login Successful!"); 
         this.Hide(); 
         HabibisGrll fm = new HabibisGrll(); 
         fm.Show(); 
        } 
        else 
        { 
         MessageBox.Show("Login Failed!"); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

并从应用程序我用列表框插入我要插入Order_ID它一直是我选择和Tbl_FinalizedTbl_order插入Order_ID的订单Tbl_order。我的代码,从列表框中插入所有订单数据库

private void Order() 
     { 
      using (SqlConnection connection = new SqlConnection(connectionString1)) 
      { 
       String query = "INSERT INTO Tbl_order (OrderName,Quantity,Price,Serves_way,Date,CustomerNo) VALUES (@OrderName,@Quantity, @Price,'" + servers + "','" + time1.ToString(format1) + "','" + Globals.order + "')"; 
       Globals.order++; 
       connection.Open(); 
       using (SqlCommand command = new SqlCommand(query, connection)) 
       { 
        // Add the length of this text column as third parameter... 
        command.Parameters.Add("OrderName", SqlDbType.NVarChar, 50); 
        command.Parameters.Add("Quantity", SqlDbType.Int); 
        command.Parameters.Add("Price", SqlDbType.Money); 
        command.Prepare(); 

       for (int i = 0; i < lst_OrderName.Items.Count; i++) 
       { 
        command.Parameters[0].Value = lst_OrderName.GetItemText(lst_OrderName.Items[i]); 
        command.Parameters[1].Value = Convert.ToInt32(lst_QTY.Items[i]); 
        command.Parameters[2].Value = Convert.ToDouble(lst_Price2.Items[i]); 

        command.ExecuteNonQuery(); 

        /* int totalRows = CustomerNo.Rows.Count; 
         int totalCols = CustomerNo.Columns.Count; 

         string value = CustomerNo.Rows[totalRows - 1][totalCols - 1].ToString();*/ 
       } 
      } 
     } 
    } 

回答

0

在but_log_in_Click你把数据放到一个数据集,其中第一场是收银员ID - 保持安全的地方,现在你有你的登录ID

+0

yeap我得到了你的观点生病尝试它并更新你^^,但'Order_ID'怎么样的线索? –

+0

https://stackoverflow.com/questions/42648/best-way-to-get-identity-of-inserted-row – BugFinder

+0

答案的线索在这里,因为他说^^但第二部分不确定tho ^^ –

相关问题