[TermNum] (AutoNumber) という名前のフィールドを持つ Access データベースがあります。
次のように(WebService C#を介して)Accessデータベースに端末を登録しようとします:
using (Conn = new OleDbConnection(Connect))
{
Conn.Open();
SQL = "select TermNum from TermNumTbl where DeviceID = '" + DeviceID + "'";
dsView = new DataSet();
adp = new OleDbDataAdapter(SQL, Conn);
adp.Fill(dsView, "TermNumTbl");
adp.Dispose();
try
{
iTermNumTmp = Convert.ToInt32(dsView.Tables[0].Rows.Count);
}
catch
{
iTermNumTmp = 0;
}
if (iTermNumTmp >= 1)
{
return (Convert.ToInt32(dsView.Tables[0].Rows[0][0].ToString().Trim()));
}
else
{
int ID;
SQL = "insert into TermNumTbl (DeviceID,IP) values (@DeviceID,@DeviceIP)";
using (OleDbCommand Cmd4 = new OleDbCommand(SQL, Conn))
{
Cmd4.Parameters.AddWithValue("@DeviceID", DeviceID);
Cmd4.Parameters.AddWithValue("@DeviceIP", DeviceIP);
Cmd4.ExecuteNonQuery();
SQL = "Select @@Identity";
Cmd4.CommandText = SQL;
ID = (int)Cmd4.ExecuteScalar();
}
return ID;
}
}
端末が存在する場合 = 彼の番号を返す
端末が存在しない場合 = 彼の番号をデータベースに挿入し、この番号を返します
問題は、時々うまくいかず、次のエラーが発生することです。
'TermNumTbl' という名前の DataTable は、既にこの DataSet に属しています