Mav*_*ven 9 .net c# sqlcommand sqldataadapter
每个人我都是学生,不熟悉.NET,特别是MVC3开发,但对于我的一个项目,我要研究它,因此经历学习阶段我面临的问题和混乱是关于数据库连接,我看到了什么.关于从数据库中检索记录是这样的:
//Method One:
var conn = new SqlConnection(conString.ConnectionString);
const string cmdString = "Select * FROM table";
var cmd = new SqlCommand(cmdString, conn);
var mySqlDataAdapter = new SqlDataAdapter(cmd);
mySqlDataAdapter = new SqlDataAdapter(cmd);
mySqlDataAdapter.Fill(myDataSet, "design");
// making a new SqlCommand object with stringQuery and SqlConnection object THEN a new SqlDataAdapter object with SqlCommand object and THEN filling up the table with the resulting dataset.
Run Code Online (Sandbox Code Playgroud)
但是当我查看MSDN Library时,我发现SqlDataAdapter提供了一个构造函数SqlDataAdapter(String,String),它直接接受一个SelectCommand和一个连接字符串来启动,从而跳过SqlCommand之间的角色,如下所示:
//Method Two:
var conn = new SqlConnection(conString.ConnectionString);
const string cmdString = "Select * FROM table";
var mySqlDataAdapter = new SqlDataAdapter(cmdString, conn);
mySqlDataAdapter.Fill(myDataSet, "design");
Run Code Online (Sandbox Code Playgroud)
对我来说看起来很简短,但我很困惑,如果这样可行,那么为什么大多数书籍/教师都会提前(SqlCommand的方式).
如果我听起来很新手或模糊,请提前道歉!将感谢任何可以清除我的概念的帮助!谢谢!:)
Errorstacks总结正确:
此外:
我个人的偏好是在SqlCommand中包装任何sql字符串并向其添加SqlParameters以避免恶意用户进行Sql注入.
关于这两种方法的表现 - 我不认为有任何区别.(如果有人可以证明我错了 - 那就去做!).
所以我建议坚持使用更长的变量1并在必要时使用命令加参数.
一点注意事项 - 由于Linq2Sql和Entity Framework,数据集和DataTables最近有点不合时宜.
但当然欢迎普通老SqlCommands/Adapters/Readers的知识:)