我有一個數據庫訂單號& trackingnumber。訂單號碼已完成。c#更新語句與where子句
我有以下代碼來更新我的數據庫中的trackingnumber列,但它只能更新訂單號碼與用戶輸入的內容相匹配的位置(用戶在default.aspx中輸入訂單號和跟蹤號碼)
目前代碼似乎工作正常。但我已經注意到一個問題,我不知道如何解決: ordernumber列只能達到數字3578,所以我認爲,如果用戶鍵入3579或更高,或實際上任何不匹配的訂單號碼,然後將拋出一個異常,但它會說「已更新」。然而沒有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;
}
}
}
}
另外,如果發生異常,您的連接將保持打開!考慮將'myConenction.Close()'移動到'Finally'塊 – Dave