【发布时间】:2021-10-19 05:29:37
【问题描述】:
C# 我目前正在从事一个依赖于下载大约 100 个条目的表格的项目。 我首先下载表格并将其存储在本地变量中,然后将变量链接到 DataGridView,用户可以在其中编辑值。 完成后,用户推送保存,它必须使用更改的信息更新 SQL DB 中的表。
我在这里寻求最佳实践,是否建议删除您已更改的行并批量上传更改或基于甚至多个参数的更新?
我知道在专门使用 SQL 时,您可以使用 UPDATE FROM 之类的命令并使用表作为源,但我不知道使用 C# 会如何工作。
提前感谢您的帮助。
public DataTable GetSingleTable(string sTableName, string sGetConnString)
{
DataTable dtTabletoReturn = new DataTable();
string sCommand = "SELECT * FROM " + sTableName+ " WHERE
BranchID = '"+ sBranchID +"'";
SqlConnection sqlConnection = new SqlConnection(sGetConnString);
sqlConnection.Open();
SqlDataAdapter sqlOilAdapter = new SqlDataAdapter(sCommand, sqlConnection);
sqlOilAdapter.Fill(dtTabletoReturn);
sqlConnection.Close();
return dtTabletoReturn;
}
【问题讨论】:
-
请出示用于“下载”表格的代码。如果您使用 SqlDataAdapter,您将拥有将表上的更改更新回服务器所需的所有内容
-
如果是我,我会写一个 MERGE 存储过程并传入你的 datagridview,前提是你的数据有一个主键
-
您需要保存对 sqlDataAdapter 的引用,并在需要保存更改时调用 SqlDataAdapter.Update 方法。为此,您应该确保您的数据表定义了一个主键,并且您需要调用 SqlCommandBuilder 将所需的命令添加到 SqlDataAdapter。见docs.microsoft.com/en-us/dotnet/framework/data/adonet/…这里还有第二个答案的例子*.com/questions/8171647/…
-
使用 EntityFramework 与 db 通信,轻松进行 CRUD。 entityframeworktutorial.net/efcore/entity-framework-core.aspx
-
旁注:不要在查询中注入东西,使用适当的参数化。诚然,动态表名很难做到这一点,但我们不知道你为什么要这样。