【问题标题】:primary key of newly added row in sql table, vb.netsql表中新增行的主键,vb.net
【发布时间】:2018-06-20 19:12:39
【问题描述】:

我有一个 vb.net 应用程序,其中 datagridview 在设计时数据绑定到 sql 表(使用表适配器和数据集)。我想要的只是在我向其中添加新行时获取新添加的行的主键(int)。我已经搜索过,但它显示如下 sql 命令:

    INSERT INTO #Customers
       (Name) 
    VALUES ('Customer 1')

    SELECT SCOPE_IDENTITY() 

所以使用 scope_identity()。但是有什么方法可以在 vb.net 中使用适配器(或数据集)来实现,或者可以通过适配器或类似命令给出相同的命令?

提前致谢!

【问题讨论】:

    标签: sql vb.net primary-key


    【解决方案1】:

    试试这个!

    SCOPE_IDENTITY() 将为您提供直接插入当前范围内任何表的最后一个标识值(范围 = 批处理、存储过程等,但不在当前范围内触发的触发器内)

    如果您要插入多行并且需要检索生成的 ID 集,请使用 OUTPUT 子句。

    INSERT #a(x)  OUTPUT inserted.identity_column VALUES('b'),('c');
    

    -- 结果将是

    1
    2
    

    【讨论】:

    • 我应该如何将它索引到 vb.net 变量中?我也是 vb.net 和 sql 的新手。
    • 可以声明一个变量并执行插入语句 dim getValue as string = cmd.ExecuteScalar()
    • 我收到错误:找不到存储过程'插入客户(名称)值('测试');在 t=mycomm.executescalar() 行中选择 scope_identity()'
    • Dim str As String = "插入到 testtable (Text,value) 值 ('Code','200'); SELECT SCOPE_IDENTITY();" Dim cmd As SqlCommand cmd = New SqlCommand(str, con) cmd.Prepare() cmd.CommandType = CommandType.Text Dim value As String = cmd.ExecuteScalar() value 你可以看到它显示了最后插入的计数
    • 感谢它的工作!我想知道 vb 中是否有任何命令或数据集上的函数可以给我相同的答案?我的意思是因为我使用的是在设计时添加的数据源,所以不要使用 sql 命令连接到数据库和所有
    猜你喜欢
    • 2011-03-22
    • 2019-12-10
    • 1970-01-01
    • 2014-01-25
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多