1

実際、私のコードは「すべてのコードパスが値を返すわけではありません」というエラーを表示します

public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
    if (Proc_name == "Vehicle_Booked_Info")
    {
        SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
        com.CommandType = CommandType.StoredProcedure;
        com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
        SqlDataAdapter sda = new SqlDataAdapter(com);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        return dt;
    }
}

私もここに入れていますreturn dt

これをif句から使用すると、エラーが表示されます

dt は現在のコンテキストに存在しません

これを克服する方法は?

4

4 に答える 4

1
public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
    DataTable dt = new DataTable();
    if (Proc_name == "Vehicle_Booked_Info")
    {
        SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
        com.CommandType = CommandType.StoredProcedure;
        com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value =       Convert.ToDateTime(arg[0].ToString());
        SqlDataAdapter sda = new SqlDataAdapter(com);
        sda.Fill(dt);
    }       
        return dt;
}
于 2013-02-25T11:25:20.417 に答える
1

ステートメント内に戻っているためif、コンパイラは条件が満たされるかどうかを判断できません。ifメソッドはタイプ のオブジェクトを返すと想定されているため、ブロック外またはelseブロック内で何かを返す必要があります。これが 以外のものでDataTableある場合、メソッドは何も返しません。したがって、次のようにメソッドを変更します。Proc_name"Vehicle_Booked_Info"

public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
    if (Proc_name == "Vehicle_Booked_Info")
    {
        SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
        com.CommandType = CommandType.StoredProcedure;
        com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
        SqlDataAdapter sda = new SqlDataAdapter(com);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        return dt;
    }
  else
    { 
     return null; //Or some default value.
    }       
}
于 2013-02-25T11:12:40.197 に答える
0

return null;メソッドの最後の直前に追加します。

    }       
    return null;
}

elseフレーズはここでは必要ありません。

ifステートメントの条件が満たされない場合、メソッドは値を返さないため、コンパイラはエラーを表示します。

于 2013-02-25T11:13:45.183 に答える
0

それは悪いコード慣行です..

次のように変更します

public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
    if (Proc_name == "Vehicle_Booked_Info")
    {
        SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
        com.CommandType = CommandType.StoredProcedure;
        com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
        SqlDataAdapter sda = new SqlDataAdapter(com);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        return dt;

    }       

    return new DataTable();// or return null


}
于 2013-02-25T11:13:49.873 に答える