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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)