我必須在我的加載窗體窗體應用程序上自動生成新的AccountID。C#在Windows窗體應用程序中從數據庫生成新的ID
因此,例如,當用戶在「帳戶ID」的文本框中啓動窗體「添加新帳戶」時,我必須顯示數據庫的最新值。如果我在Windows窗體中的文本框中的數據庫中有兩個帳戶值將是三。
我的代碼完美的工作,如果我在數據庫中至少有一個帳戶,但是當我的數據庫爲空時,我得到異常。
這是我的代碼:
public int GetLatestAccountID()
{
try
{
command.CommandText = "select Max(AccountID)as maxID from Account";
command.CommandType = CommandType.Text;
connection.Open();
OleDbDataReader reader= command.ExecuteReader();
if (reader.Read())
{
int valueID = Convert.ToInt32(reader["maxID"]);
return valueID + 1;
}
return 1;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (connection!= null)
{
connection.Close();
}
}
}
此外,我覺得答案在計算器:
object aa = DBNull.Value;
int valueID = (aa as int?).GetValueOrDefault();
,但此行的代碼的工作,如果我的數據庫是空的,但是當我有一個帳戶,在數據庫,它會一直顯示在我的Windows窗體中的帳戶ID文本框中的值。我使用Microsoft Access 2007數據庫。
我很感激任何幫助。
它已經有一段時間了,但是'ExecuteScalar'將有助於代替'ExecuteReader'。 – shahkalpesh
噢,好主意@shahkalpesh!編輯。 –
這工作!非常感謝你!! 是的,這是我的主鍵,但在數據庫中,我選擇的是數字,而不是自動編號。 –