使用MVP模式更新MySQL数据库
本文关键字:MySQL 数据库 更新 模式 MVP 使用 | 更新日期: 2023-09-27 17:50:05
我不熟悉这种模式,我想知道为什么我得到错误
"不能将dbnull转换为其他类型"
我知道我的代码不工作,这就是为什么它在_view上返回一些空值,有帮助吗?我买的是这个在线模型。
Model
public class CustomerModel
{
private string _customerid;
public string CustomerID;
{
get { return _customerid; }
set { _customerid = value; }
}
private string _orderstatus;
public string OrderStatus
{
get { return _orderstatus; }
set { _orderstatus = value; }
}
public void UpdateOrderStatus()
{
var connSettings = ConfigurationManager.ConnectionStrings["DB"];
{
string CN = connSettings.ConnectionString;
MySqlConnection conn = new MySqlConnection(CN);
MySqlCommand cmd = new MySqlCommand("update customerorders set order_status = @value where customerid = @customerid", conn);
conn.Open();
cmd.Parameters.AddWithValue("@customerid", _customerid);
cmd.Parameters.AddWithValue("@value", _orderstatus);
cmd.ExecuteNonQuery();
}
}
}
Interface
public interface ICustomer
{
void SetPresenter(CustomerPresenter presenter);
void UpdateCustomerOrderStatus(CustomerModel record);
string CustomerID { get; set; }
string OrderStatus { get; set; }
}
Presenter
public class CustomerPresenter
{
ICustomer _view;
CustomerModel _model = new CustomerModel();
public void CustomerPresenter(ICustomer view)
{
_view = view;
}
private void updateCustomerOrderStatus(CustomerModel model)
{
model.CustomerID = _view.CustomerID;
model.OrderStatus = _view.OrderStatus;
}
public void Save()
{
updateCustomerOrderStatus(CustomerModel model)
this._view.UpdateCustomerOrderStatus(CustomerModel record);
}
}
CustomerForm
public partial class frmCustomer: Form, ICustomer
{
CustomerPresenter _presenter
public void SetPresenter(CustomerPresenter presenter)
{
_presenter = presenter
}
public string CustomerID
{
get { return this.txtCustomerID.Text; }
set { txtCustomerID.Text = value; }
}
public string OrderStatus
{
get { return this.txtOrderStatus.Text; }
set { txtOrderStatus.Text = value; }
}
public void UpdateCustomerOrderStatus(CustomerModel record)
{
record.CustomerID = txtCustomerID.Text;
record.OrderStatus = txtOrderStatus.Text;
}
private void btnSave_Click(object sender, EventArgs e)
{
_presenter.Save();
}
}
您的_view
现在确实初始化正确,但_view.CustomerID
将始终是null
,因为您在get
和set
中不做任何事情。所以当你尝试使用get
时,它不会返回任何东西,这就是为什么你得到这个异常。
根据代码,_view
从未被初始化。
您是否将CustomerID隐藏在视图中,如果没有将其隐藏在视图中,我认为它将修复错误