1

我有一个 Access 数据库,其中包含名为 [TermNum] (AutoNumber) 的字段。

我尝试在 Access 数据库中注册终端(通过我的 WebService C#),如下所示:

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”的数据表已属于此数据集

4

1 回答 1

1

从您的代码看来,您已经在方法之外的某个地方定义了 dsView (也许作为类成员?)。您正在尝试将同一个表选择到同一个数据集中。根据需要将数据集定义为本地对象。改变:

dsView = new DataSet();

至:

DataSet dsView = new DataSet();
于 2013-06-04T12:23:46.260 回答