2016-11-10 5 views
2

以下のように関数をコーディングしましたが、エラーが発生しました。文字列を返すこのメソッドでアイテムの詳細を取得しようとしています。私は、引数がエラーを示している以下渡す場合メソッドエラー、mysql

public static string GetItemDetails(int i_id, string i_name) 
    { 
     MySqlConnection SQL_con = new MySqlConnection(VPconfig.sql_conns); 
     string[] ItemData = null; 
     i_name = i_name == null ? string.Empty : i_name; 
     i_id = i_id == 0 ? 0 : i_id; 

     try 
     { 
      if(i_id != 0) 
      { 
       //get Item details by ID 
       string query = "SELECT * FROM items WHERE id="+i_id; 
       MySqlCommand xv = new MySqlCommand(query, SQL_con); 
       SQL_con.Open(); 
       MySqlDataReader rdr = xv.ExecuteReader(); 
       while(rdr.Read()) 
       { 
        ItemData[0] = rdr.GetString("id"); 
        ItemData[1] = rdr.GetString("iname"); 
        ItemData[2] = rdr.GetString("iprice"); 
       } 
       SQL_con.Close(); 

       string master = ItemData[0] +"*"+ ItemData[1] +"*"+ ItemData[2]; 

       return master;//Return format ID*NAME*PRICE 
      } 
      else if(i_name != string.Empty) 
      { 
       //get Item details by Name 
       string query = "SELECT * FROM items WHERE iname=" + i_name; 
       MySqlCommand xv = new MySqlCommand(query, SQL_con); 
       SQL_con.Open(); 
       MySqlDataReader rdr = xv.ExecuteReader(); 
       while (rdr.Read()) 
       { 
        ItemData[0] = rdr.GetString("id"); 
        ItemData[1] = rdr.GetString("iname"); 
        ItemData[2] = rdr.GetString("iprice"); 
       } 
       SQL_con.Close(); 

       string master = ItemData[0] + "*" + ItemData[1] + "*" + ItemData[2]; 

       return master;//Return format ID*NAME*PRICE 
      } 
      else 
      { 
       MessageBox.Show("No Items! found with ID/Name: " + i_id + i_name); 
      } 

      //if nothing 
      return null; 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show("Error Code: 17 "+ex.Message); 

      //if nothing 
      return null; 
     } 

さて、「エラーコード:17オブジェクト参照をオブジェクトのインスタンスに設定されていません。」

string xv = VPfunctions.GetItemDetails(5, string.Empty); 
ta.Text = xv; 

ありがとう基本的に、キャッチから 。

+0

デバッガを使用する方法を知っていますか? – PaulF

+0

オブジェクトrefの内部例外をチェックできますか? – ninja

+0

私はどのデータを渡しても、エラーは同じです。 –

答えて

1

nullで文字列配列を宣言し、その値をDataReaderループに代入したためにスローされた例外です。

ので、この行:

string[] ItemData = null; 

はこのようなものに変更する必要があります。

string[] ItemData = new string[5]; 
+0

ありがとう、解決しました。 –

関連する問題