我正在寻找一些关于如何最好地使用SqlDataAdapter来访问和更新应用程序中的数据的示例。 现在我有这样的事情:
SqlDataAdapter adapter;
DataSet myData = MyDataAccessClass.GetData("Select * from Students", ref adapter);
// change some data here and save changes
adapter.Update();
所有这些都发生在代码背后,我根本不喜欢它。 所以,我正试图找到一种方法来做这样的事情:
DataSet myData = MyDataAccessClass.GetStudents();
// change some data and save changes
MyDataAccessClass.SaveStudents(myData);
其中SaveStudents
方法仍然使用SqlDataAdapter来更新db。
关于如何使这项工作的任何想法或指向最佳做法的一些指示 这样的事情非常受欢迎。谢谢。
答案 0 :(得分:0)
对我来说,这似乎是一个相当基本的数据访问层实现。一般来说,我这样做:
public class MyDataAccessClass
{
private string ConnString;
public MyDataAccessClass()
{ //Get connection string from configuration file }
public MyDataAccessClass(string connString)
{ ConnString = connString; }
public DataSet GetAllStudents()
{
//your SQL Adapter code here...
}
}
我要说的是,有了这么多ORM解决方案(包括实体框架和Linq2Sql),您可能需要考虑使用对象集合而不是数据集的数据集。然后你可以有一个方法:
public void CreateUpdateStudent(Student student)
{
//update database
}
这是相当主观的,我承认,但我觉得最好使用直接的数据集。
答案 1 :(得分:0)
如果您想使用sql-data-adapter获取更新数据,那么您可以使用这些
使用System.Data.SqlClient;
SqlConnection con = new SqlConnection("Data Source=abcd-pc;Initial Catalog=user_info;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter();
try
{
da.UpdateCommand = new SqlCommand("Update logindemo set password=@pswd where username=@uname",con);
da.UpdateCommand.Parameters.Add("@pswd", SqlDbType.VarChar).Value = txtpass.Text;
da.UpdateCommand.Parameters.Add("@uname", SqlDbType.VarChar).Value = txtusername.Text;
con.Open();
da.UpdateCommand.ExecuteNonQuery();
Label1.Text = "Data Updated";
con.Close();
}
catch
{
Label1.Text = "Unable To Connect";
}
我希望您了解如何轻松更新数据。就像这个例子一样。您可以在插入数据中使用这些类型的示例,并根据需要使用特定的命令和SQL查询来删除数据。