如何一次插入1000行

Zoy*_*ikh 18 database sql-server

我做了Wpf appliaction.我想用网格中的1000个值来测试它.我想检查一下我的网格是否会快速加载1000条数据记录.那么如何编写一个查询来在我的数据库表中插入超过1000条记录.我可以用于循环吗?

Insert into db(@names,@email,@password) Values('abc','def','mypassword');

我正在使用Sql-Server 2012和ADO.net连接!我想在数据库中执行此查询以生成1000行

编辑

如果我想插入唯一名称该怎么办?

ver*_*527 37

我创建了一个student包含三列的表id, student,age.给你看这个例子

declare @id int 
select @id = 1
while @id >=1 and @id <= 1000
begin
    insert into student values(@id, 'jack' + convert(varchar(5), @id), 12)
    select @id = @id + 1
end
Run Code Online (Sandbox Code Playgroud)

这是关于这个例子的结果 在此输入图像描述

  • 在`while`子句中有'@id> = 1`的原因是什么?我认为只有`@id <= 1000`是必要的. (4认同)

Aar*_*and 10

如果应用程序中有DataTable,并且这是1000个名称的来源,则可以使用表值参数.

一,表类型:

CREATE TYPE dbo.Names AS TABLE
(
  Name NVARCHAR(255),
  email VARCHAR(320),
  [password] VARBINARY(32) -- surely you are not storing this as a string!?
);
Run Code Online (Sandbox Code Playgroud)

然后使用这个程序:

CREATE PROCEDURE dbo.Names_BulkInsert
  @Names dbo.Names READONLY
AS
BEGIN
  SET NOCOUNT ON;

  INSERT dbo.RealTable(Name, email, password)
    SELECT Name, email, password
    FROM @Names;
END
GO
Run Code Online (Sandbox Code Playgroud)

然后你的C#代码可以说:

SqlCommand cmd = new SqlCommand("dbo.Names_BulkInsert", connection_object);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter names = cmd.Parameters.AddWithValue("@Names", DataTableName);
names.SqlDbType = SqlDbType.Structured;
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

如果您只想生成1000行随机值:

;WITH x AS
(
  SELECT TOP (1000) n = REPLACE(LEFT(name,32),'_','')
  FROM sys.all_columns ORDER BY NEWID()
)
-- INSERT dbo.sometable(name, email, [password])
SELECT 
  name = LEFT(n,3),
  email = RIGHT(n,5) + '@' + LEFT(n,2) + '.com', 
  [password] = CONVERT(VARBINARY(32), SUBSTRING(n, 1, 32))  
FROM x;
Run Code Online (Sandbox Code Playgroud)

在这些情况下,您都不应该使用while循环或游标.恕我直言.