Как восстановить id из таблицы, которая автоматически создает id
Привет всем,
У меня есть свой код, чтобы я мог создать новую квитанцию далее я должен добавить свой список продуктов в другую таблицу, связанную с моим receiptId, но моя база данных автоматически создает receiptId, и единственный способ прочитать квитанцию из базы данных-это если у меня есть receiptId, так как бы я получил receiptId, чтобы я мог вставить свой список имен в другую таблицу, связав их вместе?
private void BtnConfirmCart_Click(object sender, RoutedEventArgs e) { if (listOfP.Count != 0) //!= null? { string msg = "Are you sure you CONFIRM your cart?"; MessageBoxResult boxResult = MessageBox.Show(msg, "Confirmation", MessageBoxButton.YesNo); if(boxResult == MessageBoxResult.Yes) { //Confirm cart /Add to SQL(Create Receipt, Create Product List) /Go to receipt. try { date = DateTime.Now; decimal total = receiptCart.ReceiptTotal; int userid = customer.UserId; Extras.CreateReceipt(userid, total, date); } catch(Exception ex) { MessageBox.Show(ex.Message.ToString()); } Window WindowReceipt = new ReceiptWindow(); WindowReceipt.Show(); Close(); } } else { BtnGoBack.Visibility = Visibility.Hidden; MessageBox.Show("No items in your cart.", "Add items."); } } //Create Receipt int or void (Receipt receipt) public static int CreateReceipt(int userid, decimal rtotal, DateTime rdate) { int result = -1; using(SqlConnection connection = ConnectionString.GetSqlConnection()) { string sqlCreate = "INSERT INTO Orders(UserId, ReceiptDate, ReceiptTotal) " + "VALUES(@uid, @date, @rtotal)"; using(SqlCommand cmdCreate = new SqlCommand(sqlCreate, connection)) { //cmdCreate.Parameters.AddWithValue("@rid", receipt.ReceiptID); cmdCreate.Parameters.AddWithValue("@uid", userid); cmdCreate.Parameters.AddWithValue("@date", rdate); cmdCreate.Parameters.AddWithValue("rtotal", rtotal); try { connection.Open(); result = Convert.ToInt32(cmdCreate.ExecuteScalar()); } catch(Exception ex) { throw ex; } } } return result; } //Read Receipt public static Receipt ReadReceipt(int receiptID) { Receipt receipt = new Receipt(); using(SqlConnection connection = ConnectionString.GetSqlConnection()) { string sqlRead = "SELECT * FROM Receipts WHERE ReceiptId = @rid"; using(SqlCommand cmdRead = new SqlCommand(sqlRead, connection)) { cmdRead.Parameters.AddWithValue("@rid", receiptID); connection.Open(); using(SqlDataReader reader = cmdRead.ExecuteReader()) { if(reader != null) { while (reader.Read()) { receipt.ReceiptID = Convert.ToInt32(reader["ReceiptId"].ToString()); receipt.UserId = Convert.ToInt32(reader["UserId"].ToString()); receipt.ReceiptDate = Convert.ToDateTime(reader["ReceiptDate"].ToString()); receipt.ReceiptTotal = Convert.ToDecimal(reader["ReceiptTotal"].ToString()); } } } } } return receipt; } //THIS IS MY PLAN TO READ PRODUCTLIST TABLE NOT SURE IF THIS WILL WORK YET //Retreive all products in list from order public static List<ReturnReceiptProductList> GetReceiptProductList(int rid) { List<ReturnReceiptProductList> productList = new List<ReturnReceiptProductList>(); ReturnReceiptProductList returnReceipt = new ReturnReceiptProductList(); using (SqlConnection connection = ConnectionString.GetSqlConnection()) { string sqlList = "SELECT * FROM OrdersList WHERE ReceiptId = @rid"; using (SqlCommand cmdList = new SqlCommand(sqlList, connection)) { cmdList.Parameters.AddWithValue("@rid", rid); connection.Open(); using (SqlDataReader reader = cmdList.ExecuteReader()) { if (reader != null) { while (reader.Read()) { Product product = new Product(); Receipt receipt = new Receipt(); receipt.ReceiptID = Convert.ToInt32(reader["ReceiptId"].ToString()); receipt.UserId = Convert.ToInt32(reader["UserId"].ToString()); //product.ProductId = Convert.ToInt32(reader["ProductId"].ToString()); product.ProductName = reader["ProductName"].ToString(); product.ProductQuantity = Convert.ToInt32(reader["ProductQuantity"].ToString()); product.ProductPrice = Convert.ToDecimal(reader["ProductPrice"].ToString()); product.ProductTax = Convert.ToDecimal(reader["ProductTax"].ToString()); returnReceipt = new ReturnReceiptProductList(product, receipt); productList.Add(returnReceipt); } } } } } return productList;
Что я уже пробовал:
вставка данных, но чтобы связать другую таблицу, мне нужен идентификатор, вставленный в то же окно, и я не могу читать из таблицы, потому что мне нужен этот конкретный идентификатор...