こんにちは、2つのテーブルのデータを1つのテーブルに挿入する正しい方法は3つのテーブルなので、はOrder_ID
を、Tbl_Cashier
はCashier_ID
、 Tbl_Finalized
はOrder_ID
およびCashier_ID
である。テーブルの完全な設計2つのテーブルのデータを1つのテーブルに挿入する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])
);
が私を私がアプリケーションにログインするときに、私はします。FNameでTbl_Cashier
を使用
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])
);
をTbl_Finalizedとパスワード ログインするには、の入手方法ログインしてCashier_ID
にTbl_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);
}
}
と私はそれは私がTbl_Finalized
にTbl_order
からOrder_ID
に選択し、挿入されたOrder_ID
を挿入したい私はTbl_order
に注文を挿入するためにリストボックスを使用するアプリケーションから。あなたが最初のフィールドはレジ係のIDであるデータセット、にデータを入れbut_log_in_Clickにリストボックス
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();*/
}
}
}
}
yeap私はあなたのポイントを病気にしてそれを試して、あなたを更新^ ^、どのように 'Order_ID'の手掛かりについて? –
https://stackoverflow.com/questions/42648/best-way-to-get-identity-of-inserted-row – BugFinder
答えの手掛かりはここにあります^^でも2番目の部分はわかりませんtho ^^ –