[英]problem with asp.net gridview
我在刪除gridview時遇到問題。我有一個表名Doctor,其ID,名稱,地址,電話.Id是自動生成的字段。在我在gridview中顯示時添加數據后,如果從gridview中刪除任何ID,那么如果我再添加任何新的從表格的細節開始,從新編號開始。我的意思是,如果我刪除最后一個ID號5,然后再次添加任何新醫生,其ID值不是6而不是5,那么我的查詢應該是從5重新開始。我的代碼。請幫助我。
public class Doctor
{
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
public static class DoctorDataLayer
{
public static void AddDoctor(Doctor doctor)
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; // JohannesH: Changed from .ToString() to .ConnectionString
using(var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand("insert into doctor values(@name,@address,@phone)", connection))
{
command.Parameters.AddWithValue("@name", doctor.Name);
command.Parameters.AddWithValue("@address", doctor.Address);
command.Parameters.AddWithValue("@phone", doctor.Phone);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
}
}
public static class DoctorBusinessLayer
{
public static void CreateDoctor(string name, string address, string phone)
{
DoctorDataLayer.AddDoctor(new Doctor {Name = name, Address = address, Phone = phone});
}
}
這完全是正常的數據庫行為,與GridView沒有任何關系。 如果您對自動生成的(標識)列中的間隙存在問題,請使用自己的邏輯來生成唯一ID,或者使用自定義SQL腳本檢查Identity值中的間隙並填補這些間隙。
Transact-SQL參考中的示例B顯示了一種執行此操作的方法。
因此,該ID由數據庫創建(自動編號)。 使用ID 5時,它用完了。 這是正常現象。
正如其他人指出的那樣,如果這是從數據庫自動生成的ID,則一旦使用它就不會重新生成,每個ID是唯一的,無論數據是否仍然存在。 如果對ID進行了回收,您可能會遇到外來引用的問題,這些引用可能指向具有該ID的舊項目,而現在會指向具有重用ID的新記錄。
通常,您無論如何都不會向用戶公開ID,因此這不是問題。
您不應該依賴於自動生成的ID序列是否有序或沒有間隔。 正如其他人指出的那樣,對於自動生成的ID,您看到的行為完全是正常行為,否則,您將需要跳很多圈。 如果需要按插入順序對ID進行排序,則應放入自動生成的日期/時間字段,然后選擇該字段排序的數據(並為其編制索引)。 這樣,如果您決定從數字ID切換到GUID或其他ID格式(排序順序與插入順序不同),則仍然可以正確排序數據。 如果每個都需要一個“下訂單”,請在選擇按日期排序時自動生成該(例如行號)。 這樣,即使以后刪除記錄,您仍將具有嚴格的數字順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.