如何以干净和正确的方式缩短将数据库绑定到数据网格视图的代码



我一直希望我的代码更清晰易读。我来这里就是为了实现这一目标。因为我是初学者,所以最好早点学习。我希望有人能够给我一个建议和正确的方法。

PS:我在数据库中有3个标签页,3个数据网格视图和3个表的选项卡控件

这是我的代码

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);
}
}
}
}
}

研究编写 DRY 代码。 每次更新都重复相同的代码。 您可以使用一个更新数据网格的例程:

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);
}
}

如果我是你,如果你不想改变你的代码架构,如果你所有的 futur 请求都有相同的代码,我会重构类似的代码。

public partial class SIMSSupplier : UserControl
{
private ADDSupplier supply;
public DataTable dbdataset;
public DataSet ds = new DataSet();
public string ID = "SPPLR-000";
public int id;
DataView db;
public SIMSSupplier()
{
InitializeComponent();
}

public void SupplierDetails()
{
DoRequestAndFill(Supplierview, "Select SupplierID, Companyname, Contactname, Contactnumber as 'Contact Number', Date, Address, Remarks from Supplier_Details");
}
public void DeliveryDetails()
{
DoRequestAndFill(PurchaseDeliveries, "Select PurchaseID, Supplier, Itemdescription, Date, Quantity, Unitcost, Amount, Salesinvoice, Codeitems, Patientname from Purchase_Delivery");
}
public void OrderDetails()
{
DoRequestAndFill(PurchaseOrders, "Select PurchaseID, Supplier, Itemdescription, Date, Quantity, Unitcost, Amount, Salesinvoice, Codeitems, Patientname from Purchase_Order");
}
private void DoRequestAndFill(DataGridView grid, string request) 
{
using (var con = SQLConnection.GetConnection())
using (var select = new SqlCommand(request, con))
using (var sda = new SqlDataAdapter())
{
dbdataset = new DataTable();
sda.SelectCommand = select;
sda.Fill(dbdataset);
grid.DataSource = new BindingSource() { DataSource = dbdataset };
sda.Update(dbdataset); 
}
}
}

它决定了项目的大小和你想要什么,但你可能应该考虑在 MVC 架构中这样做。至少所有数据库对 的调用都应该在另一个类中。

另外,我真的不喜欢同名

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

第一次阅读时,我应该知道它是什么,这有点令人困惑。如果你停止你的程序并在几个月后回到它,你可能也会感到困惑(我没有看到你的代码中使用了什么地方(。

最后,如果您的"ID"是一个参数并且值不会更改,请考虑使用关键字"const"。

希望我有帮助

最新更新