2010-10-19 15 views
0
écrit

Code:inséré

SqlConnection sqlc = new SqlConnection(
         "Data Source=" + Environment.MachineName + @"\SQLEXPRESS;" + 
         "Integrated security=true;" + 
         "database=someDB"); 

SqlCommand sqlcmd; 
string tmp = string.Empty; 

for(int i = 0; i < 100000; i++) 
{ 
    tmp += "inserto into [db].[Files](...) values (...);" 
} 

sqlcmd = new SqlCommand(tmp, sqlc); 
try { sqlc.Open(); sqlcmd.ExecuteNonQuety(); } cathc{} 

inséré seulement < 1000 Comment écrire écrit tous les 100000 ?? écrit Peut être détruire et créer sqlcmd?

Répondre

0

Vous devriez probablement diviser les commandes en plus petites commandes. Dites, en insérant 500 enregistrements par SqlCommand jusqu'à ce que vous ayez inséré tous vos enregistrements.

int totalRecordsToWrite = 100000; 
int maxRecordsPerCommand = 500; 

SqlConnection sqlc = new SqlConnection(
         "Data Source=" + Environment.MachineName + @"\SQLEXPRESS;" + 
         "Integrated security=true;" + 
         "database=someDB"); 

int currentRecord = 0; 

while (currentRecord < totalRecordsToWrite) 
{ 
    SqlCommand sqlcmd; 
    string tmp = string.Empty; 

    for(int j = 0; j < maxRecordsPerCommand; j++) 
    { 
     currentRecord++; 

     if (currentRecord >= totalRecordsToWrite) 
      break; 

     // Insert record "currentRecord" of the 100000 here. 

     tmp += "inserto into [db].[Files](...) values (...);" 
    } 

    using (sqlcmd = new SqlCommand(tmp, sqlc)) 
    { 
     try { sqlc.Open(); sqlcmd.ExecuteNonQuety(); } catch{} 
    } 
} 
+1

Code plase d'écriture, parce que ne pas comprendre – 4iNo

+0

ou une meilleure façon serait d'optimiser le sql pour ne pas avoir à faire des déclarations 100000. peut-être une procédure stockée pourrait également être une meilleure option? – RPM1984

+0

et que comme argument à passer? – 4iNo