我正在尝试学习如何在 C# 中使用数据库,当我必须使用 DataSet、SqlDataAdapter 和 SqlCommandBuilder 时,我已经参与了教程。这是我在教程示例中编写的代码:
public void InitData() {
//instantiate the connection
conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\Projects IDE\\Visual Studio\\Exercitii\\Console.app\\WindowsFormsApplication1\\WindowsFormsApplication1\\PlanetWrox.mdf\";Integrated Security=True;User Instance=True");
//1.instantiate a new DataSet
dsCustomers = new DataSet();
//2.init SqlDataAdapter with select command and connection
daCustomers = new SqlDataAdapter("SELECT Id ,Name, SortOrder FROM Genre", conn);
// 3. fill in insert, update, and delete commands
SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daCustomers);
// 4. fill the dataset
daCustomers.Fill(dsCustomers, tableName);
}
public void btnUpdateClicked(object sender, EventArgs e) {
// write changes back to DataBase
daCustomers.Update(dsCustomers, tableName);
}
这里有几件事我不明白:
我注意到的第一件事是我不必打开和关闭数据库。根据我对数据库的有限知识,我知道为了访问数据,您必须打开与它的连接,完成后您有关闭它。这必须发生在幕后的某个地方。对吗?如果那是巫婆的方法吗?
第二个问题是关于 SqlDataAdapter 和 SqlCommandBuilder。我不明白 SqlCommandBuilder 在这里做了什么。SqlDataAdapter 不是执行 sql 查询的那个吗?