Lih*_*ini 7 c# sqldatasource dataset winforms
当我们可以使用简单的SQL语句直接与数据库通信时,我想了解数据集的用途.另外,哪种方式更好?更新数据集中的数据,然后立即将它们传输到数据库或直接更新数据库?
Eri*_*ert 30
当我们可以使用简单的SQL语句直接与数据库通信时,我想了解数据集的用途.
为什么每次想吃东西时都可以直接去杂货店吃冰箱里的食物?因为每次想要小吃去杂货店都非常不方便.
DataSet的目的是避免使用简单的SQL语句直接与数据库通信.DataSet的目的是充当您关心的数据的廉价本地副本,这样您就不必继续对数据库进行昂贵的高延迟调用.他们让你开车到数据商店一次,拿起你下周需要的一切,然后把它放在厨房的冰箱里,以便在你需要的时候把它放在那里.
另外,哪种方式更好?更新数据集中的数据,然后立即将它们传输到数据库或直接更新数据库?
您从网站订购了十几种不同的产品.哪种方式更好:一旦产品从制造商处获得,就可以一次交付,或者等到它们全部可用并一次性全部运送?第一种方式,你尽快得到每件物品; 第二种方式有较低的运输成本.哪种方式更好?我们应该怎么知道?这取决于你决定!
更好的数据更新策略是以更好地满足客户需求和需求的方式完成的事情.您还没有告诉我们您的客户"更好"的指标是什么,所以问题无法回答.您的客户想要什么 - 一旦有可用的最新资料,或者低运费?
TCM*_*TCM 11
数据集支持断开连接的体系结构 您可以添加本地数据,从中删除,然后使用SqlAdapter,您可以将所有内容提交到数据库.您甚至可以将xml文件直接加载到数据集中.这实际上取决于您的要求.您甚至可以在DataSet中的表之间设置内存关系.
顺便说一句,使用嵌入在您的应用程序中的直接SQL查询是一个非常糟糕和糟糕的设计应用程序的方式.您的应用程序将倾向于"Sql Injection".其次,如果您编写嵌入在应用程序中的查询,Sql Server每次都必须执行它的执行计划,而存储过程是编译的,并且它的执行在编译时已经确定.当数据变大时,Sql server也可以改变它的计划.您将通过此获得性能提升.Atleast使用存储过程并验证垃圾输入.它们固有地抵抗Sql注入.
存储过程和数据集是可行的方法.
见这个图:

编辑:如果你进入.Net framework 3.5,4.0,你可以使用像Entity Framework,NHibernate,Subsonic这样的ORM.ORM更真实地代表您的业务模式.如果ORM中不支持某些功能,则可以始终将存储过程与ORM一起使用.
例如:如果您正在编写递归CTE(公用表表达式),则存储过程非常有用.如果您使用Entity Framework,则会遇到太多问题.