Как сократить код для привязки базы данных к Datagridview в чистом и правильном виде - PullRequest
0 голосов
/ 20 сентября 2018

Я всегда хотел, чтобы мой код был чище и читабельнее.Я здесь для того, чтобы этого добиться.Так как я новичок, лучше научиться этому рано.Я надеюсь, что кто-нибудь сможет дать мне предложения и правильный способ сделать это.

PS: у меня есть Tabcontrol с 3 tabpage, 3 Datagridview и 3 Table в базе данных

ЗДЕСЬ мой код

public partial class SIMSSupplier : UserControl
{
    ADDSupplier supply;
    public SIMSSupplier()
    {
        InitializeComponent();

    }
    public DataTable dbdataset;
    public DataSet ds = new DataSet();
    public string ID = "SPPLR-000";
    public int DeliveryID;
    public int OrderID;
    DataView db;
    public void SupplierDetails()
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var select = new SqlCommand("Select SupplierID, Companyname, Contactname, Contactnumber as 'Contact Number', Date, Address, Remarks from Supplier_Details", con))
            {
                using (var sda = new SqlDataAdapter())
                {
                    sda.SelectCommand = select;
                    dbdataset = new DataTable();
                    sda.Fill(dbdataset);
                    var bsource = new BindingSource();
                    bsource.DataSource = dbdataset;
                    Supplierview.DataSource = bsource;
                    sda.Update(dbdataset);
                }
            }
        }
    }
    public void DeliveryDetails()
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var select = new SqlCommand("Select PurchaseID, Supplier, Itemdescription, Date, Quantity, Unitcost, Amount, Salesinvoice, Codeitems, Patientname from Purchase_Delivery", con))
            {
                using (var sda = new SqlDataAdapter())
                {
                    sda.SelectCommand = select;
                    dbdataset = new DataTable();
                    sda.Fill(dbdataset);
                    var bsource = new BindingSource();
                    bsource.DataSource = dbdataset;
                    PurchaseDeliveries.DataSource = bsource;
                    sda.Update(dbdataset);
                }
            }
        }
    }
    public void OrderDetails()
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var select = new SqlCommand("Select PurchaseID, Supplier, Itemdescription, Date, Quantity, Unitcost, Amount, Salesinvoice, Codeitems, Patientname from Purchase_Order", con))
            {
                using (var sda = new SqlDataAdapter())
                {
                    sda.SelectCommand = select;
                    dbdataset = new DataTable();
                    sda.Fill(dbdataset);
                    var bsource = new BindingSource();
                    bsource.DataSource = dbdataset;
                    PurchaseOrder.DataSource = bsource;
                    sda.Update(dbdataset);
                }
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Если бы я был вами И если вы не хотите менять архитектуру кода, я бы рефакторинг аналогичного кода, если все ваши запросы будущего будут иметь одинаковый код.размер вашего проекта и что вы хотите, но вы, вероятно, должны подумать об этом в архитектуре MVC.По крайней мере, все вызовы базы данных должны быть в другом классе.

Кроме того, мне не очень нравится то же имя, что и

    public string ID = "SPPLR-000";
    public int id;

При первом прочтении я должен знать, что это такое, и это немного сбивает с толку.Если вы остановите свою программу и вернетесь к ней через несколько месяцев, вы, вероятно, тоже будете сбиты с толку (я не вижу, где используется ваш код).

Наконец, рассмотрите возможность использования ключевого слова "const", если ваш "ID" является параметром и если значение не собирается изменяться.

Надеюсь, я был полезным

0 голосов
/ 20 сентября 2018

Посмотрите на написание кода, который СУХОЙ.Вы повторяете один и тот же код для каждого обновления.У вас может быть одна подпрограмма, которая обновляет DataGrid:

private void UpdateDataGrid(DataGridView grid, string sql)
{
    using (var connection = SQLConnection.GetConnection())
    using (var command = new SqlCommand(sql, connection))
    using (var adapter = new SqlDataAdapter())
    {
        adapter.SelectCommand = command;
        dbdataset = new DataTable();
        adapter.Fill(dbdataset);
        grid.DataSource = new BindingSource { DataSource = dbdataset };
        adapter.Update(dbdataset);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...