1

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

WhereSaveStudents方法仍然使用 SqlDataAdapter 来更新数据库。

任何关于如何使这项工作的想法或一些关于做这样的事情的最佳实践的指针都非常感谢。谢谢你。

4

2 回答 2

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

于 2012-02-02T18:39:10.097 回答
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
}

我承认这是相当主观的,但我发现它比直接使用 DataSet 更可取。

于 2011-05-27T16:48:37.100 回答