2013-03-07 6 views
5

यदि मैं DataAdapter.Fill(DataTable); के साथ डेटाटेबल भरता हूं और फिर डेटाटेबल में किसी पंक्ति के साथ कुछ आसान परिवर्तन करता हूं: DataTable.Rows[0]["Name"] = "New Name"; मैं आसानी से उन परिवर्तनों को डेटाबेस में कैसे सहेज सकता हूं? मुझे लगता है कि मैं DataAdapter.Update(DataTable); पर कॉल कर सकता हूं लेकिन मैंने पढ़ा है कि केवल tableAdapter (?) के साथ काम करता है।डेटाटेबल में किए गए परिवर्तनों के साथ डेटाबेस अपडेट करें ... भ्रम

+0

क्या यह ADO.net है? – Rafa

उत्तर

22

यहाँ मामला किसी में एक वास्तविक मददगार जवाब किसी और को पता है कि यह कैसे करने की जरूरत है:

SqlBulkCopyOptions.KeepIdentity की
string selectStatement = "SELECT * FROM Contact"; 
System.Data.DataTable dt = new System.Data.DataTable(); 
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); 
conn.Open(); 
SqlDataAdapter sqlDa = new SqlDataAdapter(); 
sqlDa.SelectCommand = new SqlCommand(selectStatement, conn); 
SqlCommandBuilder cb = new SqlCommandBuilder(sqlDa); 
sqlDa.Fill(dt); 
dt.Rows[0]["Name"] = "Some new data here"; 
sqlDa.UpdateCommand = cb.GetUpdateCommand(); 
sqlDa.Update(dt); 
+0

धन्यवाद आदमी, यह कोशिश करेगा। – zulucoda

+0

cb.GetUpdateCommand(); ? यह क्या लौटाता है ?? –

0

लें ध्यान दें, आप या आपकी परिस्थिति के लिए इस का उपयोग करने के लिए नहीं चाहते हो सकता है हो सकता है।

using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) 
{ 
     // my DataTable column names match my SQL Column names, so I simply made this loop. However if your column names don't match, just pass in which datatable name matches the SQL column name in Column Mappings 
     foreach (DataColumn col in table.Columns) 
     { 
      bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); 
     } 
     bulkCopy.BulkCopyTimeout = 600; 
     bulkCopy.DestinationTableName = destinationTableName; 
     bulkCopy.WriteToServer(table); 
} 
संबंधित मुद्दे

 संबंधित मुद्दे