2017-02-20 7 views
-1

こんにちは、これを重複としてマークする前に、私は見て、他の人を試して、運がなかった。すべてのコードパスが値を返すわけではありません。C# - プライベート文字列とforループ

すべてのコードパスが値を返すわけではないという文字列getBrandのエラーが引き続き発生します。以下は

private string getBrand(string id) 
{ 
    con.Open(); 
    SqlCommand cmd = con.CreateCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "Select brand from tbl_products where productId = '" + id + "'"; 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
    DataTable dt = new DataTable(); 
    SqlDataAdapter sda = new SqlDataAdapter(cmd); 
    sda.Fill(dt); 
    getBrand = dt.Rows[0][0].ToString(); 
}  

私はgetBrand Stringに渡す文字列「idは」からのクエリを実行したい取得する場所です。

for (int i = 0; i < salesGridView.Rows.Count; i++) 
{ 
    table2.AddCell(new Phrase(salesGridView[1, i].Value.ToString(), normFont)); 
    string id = salesGridView[0, i].Value.ToString(); 
    table2.AddCell(new Phrase(getBrand(id), normFont)); 
} 
+2

C#はVBAではありません。関数の名前に値を設定するのではなく、 'return'キーワードを使用して戻ります。 – InBetween

+0

実際に呼び出したメソッドに値を返すreturnステートメントを使用しない – 97hilfel

+0

[この記事を最初に読むかもしれません](https://msdn.microsoft.com/en-us/library/ms173114.aspx)戻り値 – DomeTune

答えて

3

dt.Rows[0][0].ToString();をメソッド名に保存しました。方法から次の行を返す必要があります。

return dt.Rows[0][0].ToString(); 

または、別の変数の名前に格納し、その変数を返します。このように:

var temp = dt.Rows[0][0].ToString(); 
return temp; 
+0

ブリリアント!ありがとうございました:) – ZeeSoft

+0

正しいとマークする前に10分待つ必要があります! – ZeeSoft

0

あなたは、このようにそれを実行する必要があります。

private string getBrand(string id) 
    { 
     con.Open(); 
     SqlCommand cmd = con.CreateCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "Select brand from tbl_products where productId = '" + id + "'"; 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     DataTable dt = new DataTable(); 
     SqlDataAdapter sda = new SqlDataAdapter(cmd); 
     sda.Fill(dt); 

     return dt.Rows[0][0].ToString(); 
    }  
関連する問題