Se si dispone di un DataTable nell'applicazione, e qui si trovano i nomi 1000 da, è possibile utilizzare un parametro con valori di tabella per questo.
In primo luogo, un tipo di tabella:
CREATE TYPE dbo.Names AS TABLE
(
Name NVARCHAR(255),
email VARCHAR(320),
[password] VARBINARY(32) -- surely you are not storing this as a string!?
);
Poi una procedura per utilizzare questo:
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
Allora il vostro codice C# può dire:
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();
Se si desidera solo per generare 1000 righe con valori casuali:
;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;
In nessuno di questi casi si dovrebbe utilizzare durante loops o cursori. A PARER MIO.
Come stai generando questi valori 1000? Stai utilizzando un DataTable per memorizzare i tuoi valori? Hai esaminato [SqlBulkCopy] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx)? In questo momento la tua domanda è troppo ampia perché ci sono molti modi per farlo a seconda dei dettagli che hai tralasciato. Per favore spiegate di più quali tecnologie state usando (ADO.NET, Entitiy Framework, NHibernate) e come state usando. –
@ScottChamberlain Sì, sto usando la tabella di database chiamata 'db'. Vorrei scrivere una query per generare 1000 righe nella mia tabella. –
@Zoya sta chiedendo da dove vengono i 1000 nomi. Stai cercando di generare 1000 nomi identici, 1000 nomi diversi (e se sì, come)? Hai già una lista di 1000 nomi? Definisci meglio la tua domanda per favore. –