我的代码构造为从我的数据库中读取名为 (dg) 的 datagridView 中的数据。
它实际上与 SqlDataAdapter 配合得很好。
首先,将我的 SqlDataAdapter 更改为 SqlCommand 是个好主意吗?
如果是
我想用它来更改我的 SqlDataAdapter。
//SqlCommand cmd = new SqlCommand("Command String", con);
//SqlDataReader readdata;
代码
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;
最佳答案
当我需要对控件进行数据绑定(bind)时,我通常使用 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,它将填充一个数据表或数据集将记录它在您的选择语句中找到的记录,并为列采用正确的值类型,并且是内存数据库中的断开连接表示,如果您要显示大量数据,它是理想且更易于使用的与 SqlDataReader 一样,将记录添加到绑定(bind)源中是不可能的,只能为每行指定的列获取一个值。
SqlDataAdapter 还允许您将行更新、删除或插入到数据集/数据表中,这是一个优势,如果您正确实现,它将根据行在数据集/数据表中的修改方式执行适当的命令。
与 SqlDataReader 上的快速前向读取相比,SqlDataAdapter 成本较高,并且具有更多优势,但完全取决于您的解决方案和您的需求。
你说你要显示很多记录,虽然这一切都很好,但为了性能和内存使用的好处,最好只获取你需要显示的记录和一个 SqlDataAdapter也适用于此,但您仍然需要选择最有可能通过输入搜索条件或可能通过分页显示给用户的记录。
关于c# - 在我的 C# 代码中为 SqlCommand 替换 SqlDataAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532379/