1

[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 に属しています

4

1 に答える 1