資料庫應用常需自動生成編號(如 BH1000001、ORD20240001)。核心邏輯:查詢現有最大編號 → 解析數字部分 → 遞增 → 格式化回補字首。
using (var conn = new SqlConnection("Data Source=(local);Database=db_04;Uid=sa;Pwd=;"))
using (var da = new SqlDataAdapter("select ID from tb_31", conn))
{
var ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("編號為:BH1000001", "資訊");
}
else
{
// 取得最後一筆編號,假設格式固定 "BH" + 7 位數字
string lastId = ds.Tables[0].Rows[ds.Tables[0].Rows.Count - 1][0].ToString();
int num = Convert.ToInt32(lastId.Substring(2, 7)); // 從索引 2 取 7 碼
MessageBox.Show($"編號為:BH{num + 1:D7}", "資訊");
}
}
Substring(2, 7):跳過字首 "BH",擷取 7 位數字字串。Convert.ToInt32:轉為整數以便遞增。{num + 1:D7}:格式化為 7 位數字,不足前補 0。ORDER BY ID DESC 並 TOP 1 直接取最大值,避免全表掃描。