当我在Visual Studio中创建表适配器时,我可以单击高级选项并选择这些选项......
也许我的假设是错误的,但对我来说以某种方式检索该标识列值是有意义的。我查看了表适配器的自动生成的Insert()函数,它返回的整数是ExecuteNonQuery()的结果,它是受影响的行。
有人可以解释使用此复选框吗?我如何使用它来检索插入行的标识?
答案 0 :(得分:0)
首先,该表需要数据库上的主键,否则不会生成更新命令,并且插入后不会刷新DataTable(如果密钥是由数据库生成的,例如自动增量)。 如果您没有主键并且想要检索db生成的值,请使用OUTPUT子句:
isnert into tablename(coulumnnames ..)OUTPUT inserted。* VALUES(values ...)
BR
答案 1 :(得分:0)
系统设计用于处理数据表,所以如果你想添加一行,一个方法是
第3步实际执行插入操作,然后在SCOPE_IDENTITY()上执行选择以刷新所有字段,包括“ID”列。
来自WCF的工作示例:
public string AddABCrecord(_ABCrecord ABC)
{
bool isValid = (ABC.Activity != null) && (ABC.Behaviour != null) && (ABC.Consequence != null);
DS.__ABCrecordDataTable dt = new DS.__ABCrecordDataTable();
dt.Add__ABCrecordRow(ABC.Session, ABC.Section, ABC.Video, ABC.Ordinal,
ABC.Name, ABC.Date, ABC.Time, ABC.Location, ABC.Activity,
ABC.Antecedent, ABC.Behaviour, ABC.Consequence,
isValid);
try
{
new ta__ABCrecord().Update(dt);
return dt[0].ID.ToString();
}
catch (Exception e)
{
return "Error Adding ABC record\r\n" + e.Message + ((e.InnerException == null) ? "" : Environment.NewLine + e.InnerException.Message);
}
}