2015-06-11 3 views
2

Я использую SqlDataAdapter и SqlCommandBuilder для выполнения транзакций DML по строкам в базе данных SQL Server.Как использовать SqlDataAdapter для обновления нескольких строк в C#

Я могу добавлять и удалять несколько строк в базе данных, но обновлять.

Это код:

SqlDataAdapter da = new SqlDataAdapter(@"select top 1 * from " + tableName, 
ConnectionString); 
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da); 
da.Update(dt); 

Я пытаюсь использовать AcceptChanges, до сих пор не работает.

+0

Вы сталкиваетесь с какой-либо ошибкой при попытке обновления? – fujiFX

+0

no, я не получаю никакой ошибки – Bader

+0

Почему бы не использовать 'SqlCommand', добавить sql-совместимые' параметры', а затем выполнить 'executeNonQuery'? – aspiring

ответ

0

Я нашел причину, столбец установлен DateTime type. Таким образом, этот столбец не сохраняется в базе данных.

0

Так я обычно делаю внутри C#. Если вы хотите попробовать.

//you may put this as a direct string or in a static class when layering 
//you can pass table as hard-coded value or as a parameter 
String SqlQuery = "UPDATE " + 
      " [tableName] " + 
      " SET [Column1ToBeUpdated][email protected]," + 
      " [Column2ToBeUpdated][email protected]" + 
      " WHERE ([ColumnxWithCondition] = @Condition)"; 

//add OR, AND operators as per your needs 
//choose the correct SqlDbType for your column data types 

public bool UpdateMyTable(String SqlQuery, Someclass obj) 
{ 
     SqlCommand sCommand = new SqlCommand(this.SqlQuery, (new SqlConnection(ConnectionString))); 

     sCommand.Parameters.Add("@Column1Value", SqlDbType.VarChar).Value = obj.col1Value; 
     sCommand.Parameters.Add("@Column2Value", SqlDbType.VarChar).Value = obj.col2Value; 
     sCommand.Parameters.Add("@Condition", SqlDbType.VarChar).Value = obj.condition; 

     sCommand.Connection.Open(); 
     var rowsAffected = sCommand.ExecuteNonQuery(); 
     sCommand.Connection.Close(); 
     return rowsAffected > 0; 
} 

//if you want to see the number, you may return rowsAffected 
+0

Я только заметил, что @TimSchmelter имеет [отличный ответ здесь с SqlDataAdapter для пакетных обновлений.] (Http://stackoverflow.com/q/9410018/2061309). Вы можете попробовать это. – aspiring

 Смежные вопросы

  • Нет связанных вопросов^_^