Чтение и обновление данных с помощью SqlDataAdapter Вопрос - PullRequest
1 голос
/ 27 мая 2011

Я ищу несколько примеров того, как наилучшим образом использовать 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 для обновления БД.

Любые идеи о том, как сделать эторабота или некоторые ссылки на лучшие практики делать что-то подобное высоко ценится.Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Если вы хотите получить данные обновления с помощью sql-data-adapter, тогда вы можете использовать эти

Using 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, как требуется.

0 голосов
/ 27 мая 2011

Мне кажется, это довольно простая реализация уровня доступа к данным.Как правило, я делаю это примерно так:

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 (включая только Entity Framework и Linq2Sql) вы можете рассмотреть возможность использования коллекцийобъекты вместо наборов данных для ваших представлений данных.Тогда у вас может быть такой метод:

public void CreateUpdateStudent(Student student)
{
    //update database
}

Это довольно субъективно, я признаю, но я считаю, что это предпочтительнее, чем использование прямых наборов данных.

...