Adapter.Update (DataTable);
方法更新表数据源的所有行还是仅更新那些已修改的行?
逻辑:
-连接数据库;
-我们对表格行进行采样;
-用户进行更改;
-保存。方法Save()
。
我使用代码来处理数据库:
public DataTable CreateCmds()
{
table_2 = new DataTable();
try
{
string connectionString = @"Data Source=.\SQLEXPRESS1;Initial Catalog=Prb;Integrated Security=True";
string queryString = "SELECT * FROM tbl_01_Groups";
// string connectString = "Data Source=.\\SQLEXPRESS;Initial Catalog=LSTU_Schedule_autumn20172018;" + "Integrated Security=true;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
connection.Open();
adapter.Fill(table_2);
}
}
catch (Exception ex)
{
string s = ex.Message;
string t = ex.StackTrace;
// throw;
}
return table_2;
}
public void Save()
{
string connectionString = @"Data Source=.\SQLEXPRESS1;Initial Catalog=Prb;Integrated Security=True";
string queryString = "SELECT * FROM tbl_01_Groups";
using (SqlConnection connection = new SqlConnection(connectionString))
{
adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
connection.Open();
adapter.Update(table_2);
}
}
更新_1
我没有在网络上找到答案,也没有找到解决该问题的方法。
问题是由于代码效率提高所致。
我以为执行表达式adapter.Update(DataTable)
时,代码会遍历数据源表的所有行。
如果是这种情况,那么可能存在更有效的方式来对代码进行采样以仅更新已更改的行。
答案 0 :(得分:1)
DataTable.Rows [index] .RowState引用数据行的状态。
ADO.NET将检查状态,仅在状态更改时更新。
该更新是逐行执行的。对于每个插入,修改和删除的行,Update方法都会确定对其执行的更改的类型