【发布时间】:2015-05-21 06:38:37
【问题描述】:
我是这种模式的新手,我想知道为什么会出错
“无法将 dbnull 转换为其他类型”
我知道我的代码不起作用,这就是为什么它在 _view 上返回一些空值,有什么帮助吗?我在网上得到这个 model.CustomerID = _view.CustomerID;
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();
}
}
【问题讨论】:
-
代码中的哪一点出现异常?
-
这里model.CustomerID = _view.CustomerID;
-
您的代码清楚地表明
_view对象已声明但未初始化。 -
我已经编辑了我的帖子,请检查一下,已经初始化了它,但现在我的保存事件按钮仍然出现同样的错误。