我正在使用数据集。我有一个名为 PackageTableAdapter 的表适配器,其中包含一个名为 InsertPackage 的方法。
INSERT INTO [dbo].[Packages] ([UserID], [Name]) VALUES (@UserID, @Name)
//Return the PackageID value for the newly created record...
SELECT SCOPE_IDENTITY()
这个表适配器被中间层类使用,代码如下:
private PackagesTableAdapter _packagesTableAdapter = null;
protected PackagesTableAdapter Adapter
{
get
{
if (_packagesTableAdapter == null)
_packagesTableAdapter = new PackagesTableAdapter();
return _packagesTableAdapter;
}
}
public bool AddPackage(string PackageName)
{
// Create a new PackageRow instance
Album.PackagesDataTable packages = new AlbumCongo.PackagesDataTable();
Album.PackagesRow package = packages.NewPackagesRow();
// Add the new package
package.Name = PackageName;
packages.AddPackagesRow(package);
int rowsAffected = Adapter.Update(packages);
// Return true if precisely one row was inserted,
// otherwise false
return rowsAffected == 1;
}
如何获取新创建的包的主键(应该由 SELECT SCOPE_IDENTITY() 语句返回的主键)?
编辑
我不想返回 bool 值,而是返回一个自定义对象,其中包含 bool 值和表示新创建行 ID 的整数。
感谢您的帮助。
最佳答案
首先,您必须将插入方法的返回类型设置为Scaler
。您也可以通过右键单击 insert Method properties
的属性来执行此操作。
其次,您可以通过调用 Adapter 方法
来获取 ID,如下所示:
Int32 ID = Convert.ToInt32(Adapter.Insert(parameters...);
关于c# - 数据集:如何抓取SELECT SCOPE_IDENTITY()返回的主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6065459/