使用SqlDataAdapter问题读取和更新数据

时间:2011-05-27 16:34:09

标签: data-access-layer sqldataadapter

我正在寻找一些关于如何最好地使用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。

关于如何使这项工作的任何想法或指向最佳做法的一些指示 这样的事情非常受欢迎。谢谢。

2 个答案:

答案 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查询来删除数据。