我使用此代码从数据库表中选择maxID,并且每次我想添加新记录时,自动生成的ID不是最后一个一个+1。当试图向数据库添加新记录时,在C#中自动生成和自动增量ID
public formularAddCompanie()
{
InitializeComponent();
try
{
string cs = "Data Source=CODRINMA\\CODRINMA;Initial Catalog=TrafficManager;Integrated Security=True";
string select = "SELECT max(IDCompanie) FROM Companii";
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlCommand cmd2 = new SqlCommand(select, con);
SqlDataReader sda = cmd2.ExecuteReader();
DataTable idmax = new DataTable("idmax");
idmax.Load(sda);
if (idmax.Rows[0][0].ToString().Trim() == "") { txtID.Text = "1"; }
else { txtID.Text = (int.Parse(idmax.Rows[0][0] .ToString() + 1).ToString()); }
}
}
catch (Exception er) { MessageBox.Show(er.Message); }
}
从那里做出选择表,如下所示:
IDCompany Name Address City RegNo
1 A Street NY 123
每次我想添加一个新的记录,自动生成的ID是这样的:11,111,1111。它取最后一个ID并在其旁添加另一个1。我错过了什么?
您是否知道SQL Server有IDENTITY列,这些列可以为您生成自动增量值,你正试图用MAX函数来模拟? (如果您拥有多个并发用户,则为安全的失败方式) – Steve
除了@Steve提及的内容之外,如果您有多个用户同时使用系统,则会失败,因为它们的两个客户端实例可以轻松生成相同的ID。 –
@Steve - 我知道IDENTITY属性,但我不知道如何将它链接到我的应用程序,所以我选择了这种方式.. – cdrrr