private void butOK_Click(object sender, EventArgs e) { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Open(); string sql; // MessageBox.Show(curBookId.ToString()); if (curOrderId == -1) { sql = "INSERT INTO orders (id, order_number, dt, r_user_add_id, r_client_id) VALUES (nextval('books_seq'), @order_number, (SELECT CURRENT_TIMESTAMP), @user_add, @client); SELECT last_value FROM books_seq;"; } else { sql = "UPDATE orders SET order_number = @order_number, r_client_id = @client WHERE id = @id; SELECT -100;"; } int res; using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) { if (curOrderId != -1) { command.Parameters.AddWithValue("id", curOrderId); } else { command.Parameters.AddWithValue("user_add", CurrentUser.getUserId()); } command.Parameters.AddWithValue("order_number", medOrderNumber.Text); command.Parameters.AddWithValue("client", selClientId); res = Convert.ToInt32(command.ExecuteScalar()); } string[] booksIds = new string[dataGridBooks.Rows.Count]; string sqlOrder = "DELETE FROM ref_orders_books WHERE r_orders_id = " + curOrderId + "; "; int orderId = curOrderId == -1 ? res : curOrderId; int i = 0; foreach (DataGridViewRow row in dataGridBooks.Rows) { booksIds[i] = row.Cells["id"].Value != null ? row.Cells["id"].Value.ToString() : string.Empty; sqlOrder += "INSERT INTO ref_orders_books (id, r_orders_id, r_books_id ) VALUES (nextval('books_seq'), " + orderId + ", " + booksIds[i] + "); "; i++; } // MessageBox.Show(authSql); this.Close(); using (NpgsqlCommand command = new NpgsqlCommand(sqlOrder, conn)) { command.ExecuteNonQuery(); } }