У меня есть база данных с номером заказа & номер отслеживания. Номер порядка уже завершен.C# инструкция обновления с предложением where
У меня есть следующий код для обновления столбца столбца отслеживания в моей базе данных, но он должен только обновлять, где номер порядка соответствует тому, что пользователь вводит. (Пользователь вводит номер заказа и номер отслеживания по умолчанию .aspx)
В настоящий момент код работает нормально. но я заметил проблему im не уверен, как исправить: столбец номер заказа только поднимается до номера 3578, поэтому я ожидал бы, что если пользователь напечатал 3579 или выше, или действительно что-нибудь, что не соответствует номеру порядка, тогда будет выбрано исключение, но вместо этого будет сказано «обновлено». Однако нет номера порядка 3579, его просто нет. так это мой SQL-запрос, который работает неправильно? как у меня есть предложение «Где», или есть что-то еще, что я пропустил?
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace tracking
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
errorLabel.Visible = false;
SuccessLabel.Visible = false;
}
protected void submitBtn_Click(object sender, EventArgs e)
{
int _orderID = Convert.ToInt32(orderID.Text);
string _trackingID = trackingNumber.Text;
SqlConnection myConnection = new SqlConnection("Data Source=MYDATABASESERVER;Initial Catalog=DATABASENAME;User ID=USERNAME;Password=PASSWORD");
SqlCommand myCommand = new SqlCommand("UPDATE Shipment SET TrackingNumber = @tracking WHERE OrderId = @order", myConnection);
try
{
myConnection.Open();
myCommand.Parameters.AddWithValue("@order", _orderID);
myCommand.Parameters.AddWithValue("@tracking", _trackingID);
myCommand.ExecuteNonQuery();
myConnection.Close();
SuccessLabel.Text = "Thank you, tracking details have been updated";
SuccessLabel.Visible = true;
orderID.Text = "";
trackingNumber.Text = "";
}
catch (Exception f)
{
errorLabel.Text = f.Message.ToString();
errorLabel.Visible = true;
return;
}
}
}
}
Как в стороне, если есть исключение, ваше соединение останется открытым! Рассмотрим перемещение 'myConenction.Close()' в блок 'Наконец' – Dave