如何在插入完数据库后获得返回值

如何在插入完数据库后获得返回值,第1张

C#代码:

using System

using System.Collections.Generic

using System.Text

using System.Data.SqlClient

namespace dd

{

class Program

{

static void Main(string[] args)

{

string str="server=.database=testuid=sapwd=sa"

SqlConnection conn = new SqlConnection(str)

string CommandText="insert into test(test1,test2) values(90,30) SELECT CAST(scope_identity() AS int)"---返回最后一次插入数据的id

SqlCommand cmd = new SqlCommand(CommandText, conn)

conn.Open()

int i=(int)cmd.ExecuteScalar()

conn.Close()

Console.WriteLine(i)

}

}

}

你的这个需求好象直接再把记录插入到表2就可以,但我估计你不是这个意思。

比较笨的办法,可以定义一个数组用于记录表1的ID值,或者用个临时表来记录表一新增加的记录ID列表。

insert后,query的指针应该还是停留在最新增加的记录上的,因此是可以取得到ID值的。

代码如下,假设表一只有二个字段,一个是ID(自动增量),一个是字段A(字符型),

var

sql:string

id1:integer

begin

sql:='insert into 表一 ('''+字段A+''') values ('''+ '内容'+''')'

query1.close

query1.sql.clear

query1.sql.add(sql)

query1.Execsql

id1:=query1.fieldbyname('id').asinteger

//接下来可以把ID1的值写入临时表或者数组了,如果是需要不同的机器取得ID值,可以用临时表,不过速度会慢些,如果只是本机取得,就用数组好了。

//后面的代码略

...

...

end

上述代码我没有条件试,应该可以,另外还可以用append的方法追加记录,这样就一定可以用上面的方法取到ID值了。

var

id1:integer

begin

query1.append

query1.fieldbyname('字段A').asstring = '内容'

query1.post

id1:=query1.fieldbyname('ID').asinteger

//这种方法一定可以取得到ID值。

//后面你自行对取得的ID进行存储就行了,临时表或者数组都可以。代码略

end

将 OUTPUT INTO 用于简单 INSERT 语句

下例向 ScrapReason 表插入一行,并使用 OUTPUT 子句将语句的结果返回给 @MyTableVartable 变量。由于 ScrapReasonID 列使用 IDENTITY 属性定义,因此未在 INSERT 语句中为该列指定一个值。但请注意,将在列 INSERTED.ScrapReasonID 内的 OUTPUT 子句中返回由数据库引擎为该列生成的值。

--创建测试表

Create table Test

(

ID int identity primary key,

Name nvarchar(100),

datet datetime

)

--返回结果集

Create table #Test

(

ID int primary key,

Name nvarchar(100)

)

--插入数据,并使用OUTPUT 子句返回结果集

insert into Test

OUTPUT INSERTED.ID, INSERTED.Name

INTO #Test

select N'Test1',GETDATE()

union all select N'Test2',GETDATE()+1

union all select N'Test3',GETDATE()+2

union all select N'Test4',GETDATE()+3

--验证返回的数据

SELECT * FROM #Test

--实例2

USE AdventureWorks

GO

DECLARE @MyTableVar table( ScrapReasonID smallint,

Name varchar(50),

ModifiedDate datetime)

INSERT Production.ScrapReason

OUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate

INTO @MyTableVar

VALUES (N'Operator error', GETDATE())

--Display the result set of the table variable.

SELECT ScrapReasonID, Name, ModifiedDate FROM @MyTableVar

--Display the result set of the table.

SELECT ScrapReasonID, Name, ModifiedDate

FROM Production.ScrapReason

GO


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11357132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存