2015-05-21 2 views
1

Я новичок в этом виде узора я задаюсь вопросом, почему я получаю сообщение об ошибкеОбновление базы данных MySQL с помощью MVP Pattern

«не может преобразовать DBNull к другим типам»

я знаю мой код не работает, поэтому он возвращает некоторые нулевые значения в _view, любую помощь? im получение этой он-лайн модели.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(); 
     } 
    } 
+0

В какой момент кода вы получаете исключение? –

+0

здесь модель.CustomerID = _view.CustomerID; – Nevi

+0

Ваш код четко указывает, что объект '_view' объявлен, но не инициализирован. –

ответ

0

В соответствии с кодом _view не инициализируется.

+0

вы можете уточнить, что вы имеете в виду? – Nevi

+0

Вы только объявляете 'ICustomer _view;', но никогда не присваиваете '_view' любым значением. – shruti1810

+0

Вы имеете в виду, мне нужно, как это SetViewValues ​​(вид ICustomer) {_view = view}? – Nevi

0

ли вы сделать КодКлиент скрытым в вашем View, если не сделать его скрытым в вашей точке зрения, и я думаю, что это будет исправить ошибку

+0

что вы имеете в виду сэр? – Nevi

2

Вашего _view теперь действительно инициализирован правильно, но _view.CustomerID всегда будет null, потому что дон ничего не делайте в пределах get и set. Поэтому, когда вы пытаетесь использовать get, он ничего не вернет, и именно поэтому вы получаете это исключение.

+0

Вы никогда не используете: 'CustomerModel.UpdateOrderStatus', и вы должны знать, что вы можете напрямую настраивать' CustomerModel.CustomerID' и 'CustomerModel.OrderStatus', а не шаги между ними. – Kyra

Смежные вопросы