我有一个带有订单号和跟踪号的数据库。订单号已经完成。
我有以下代码来更新数据库中的 trackingnumber 列,但它必须只更新 ordernumber 与用户键入的内容匹配的位置。(用户在 default.aspx 中输入订单号和跟踪号)
目前,代码似乎工作正常。但我注意到一个问题,我不知道如何解决:ordernumber 列只上升到数字 3578,所以我希望如果用户输入 3579 或更高,或者实际上任何与 ordernumber 不匹配的内容,然后将抛出异常,但它显示“已更新”。但是没有订单号 3579,它只是不存在。那么是我的 SQL 查询无法正常工作吗?因为我有“Where”子句。还是我错过了其他东西?
代码:
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;
}
}
}
}