当我在 Visual Studio 中创建表适配器时,我可以单击高级选项并选择这些选项...
也许我的假设是错误的,但以某种方式检索该标识列值对我来说是有意义的。我查看了表适配器的自动生成的 Insert() 函数,它返回的整数是 ExecuteNonQuery() 的结果,它是受影响的行。
有人可以解释这个复选框的用法吗?以及如何使用它来检索插入行的标识?
当我在 Visual Studio 中创建表适配器时,我可以单击高级选项并选择这些选项...
也许我的假设是错误的,但以某种方式检索该标识列值对我来说是有意义的。我查看了表适配器的自动生成的 Insert() 函数,它返回的整数是 ExecuteNonQuery() 的结果,它是受影响的行。
有人可以解释这个复选框的用法吗?以及如何使用它来检索插入行的标识?
首先,表需要数据库上的主键,否则不会生成更新命令,插入后DataTable不会刷新(如果键是由数据库生成的,例如自动增量)。
如果您没有主键并且想要检索 db 生成的值,请使用 OUTPUT 子句:
INSERT INTO tablename (columnnames ..)
OUTPUT inserted.*
VALUES (values...)
br
该系统旨在使用数据表,因此,如果您想添加单行,一种方法是
第 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);
}
}