在我的C#代码中替换SqlDataAdapter for SqlCommand

时间:2011-09-23 16:53:55

标签: c# ado.net

我的代码构造用于从我的数据库中读取名为(dg)的datagridView中的数据。

它实际上很适合SqlDataAdapter。

首先为SqlCommand更改我的SqlDataAdapter是个好主意吗?

如果是

我想用它来改变我的SqlDataAdapter。

//SqlCommand cmd = new SqlCommand("Command String", con);
//SqlDataReader readdata;

CODE

SqlConnection con = new SqlConnection(dc.Con);

SqlDataAdapter da = new SqlDataAdapter();
con.Open();
da.SelectCommand = new SqlCommand("SELECT * FROM tblContacts", con);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();

dg.DataSource = dt;

1 个答案:

答案 0 :(得分:1)

当我需要对控件进行数据绑定时,我通常使用DataAdapter进行数据访问。在这些情况下,它非常方便和有效。否则,我直接使用Command对象。在性能方面,我倾向于同意/ / punzki。两者之间应该没有太大区别。

http://msforums.ph/forums/p/9057/9057.aspx

实际上,根据我的记忆,SqlDataAdapter使用SqlDataReader来检索记录。因此,当您要从后端检索数据时,使用SQLDataReader总是好的。但是,如果您要检索数据,然后稍后更新(插入,更新,删除)数据,那么最好使用SqlDataAdapter。我认为这样更有效率。

http://msforums.ph/forums/t/29256.aspx

对性能有影响。

SqlDataReader无疑比SqlDataAdapter更快,因为DataReader以只转发模式读取数据,您可以获得返回给您的特定类型的值,例如字符串或int等...但是使用SqlDataAdapter,它将填充一个数据表或数据集,它将在select语句中找到它的记录,并为其提供列的正确值类型,并且是内存数据库的断开连接表示,如果要显示大量数据,它是理想的,更容易使用对于绑定源的记录,与SqlDataReader一样,它是不可能的,但只能获取每行指定的列的值。

SqlDataAdapter还允许您更新,删除或插入数据集/数据表中的行,这是一个优势,如果您正确实现了它,将根据在数据集/数据表中修改行的方式执行相应的命令。

与SqlDataReader上的快速读取相比,SqlDataAdapter价格昂贵,并且具有更多优势,但完全取决于您的解决方案以及您需要的内容。

你说你要显示很多记录,虽然这一切都很好,但是为了获得你需要显示的记录和一个SqlDataAdapter,性能和内存使用的好处会更好也适用于此,但仍然需要选择您最有可能通过输入搜索条件或可能通过分页向用户显示的记录。

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/c2d762fd-f4a0-4875-8bb8-42f7480e97c8/