状況は次のとおりですが、SQL Serverにストアドプロシージャがありますが、これにはいくつかの出力パラメータがあり、そのうちの1つはビットタイプです。そのパラメータは変換エラー、InvalidCastException
があります。C#のストアドプロシージャからビット値を取得する
これは私のコードです:
public void exec()
{
String strConnString = "Server=.\\SQLEXPRESS;Database=recalls;Integrated Security=true";
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "findVinCamp";
int c = Int32.Parse(campaing.Text);
cmd.Parameters.Add("@camp", SqlDbType.Int).Value = c;
cmd.Parameters.Add("@vin", SqlDbType.VarChar, 100).Value = vin.Text;
cmd.Parameters.Add("@desc", SqlDbType.NVarChar, 255).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@st", SqlDbType.VarChar, 50).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@bit", SqlDbType.Bit).Direction = ParameterDirection.Output;
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
bit = (int)cmd.Parameters["@bit"].Value; //Exception Here
if (bit == 1)
{
desc.Text = cmd.Parameters["@desc"].Value.ToString();
stt.Text = cmd.Parameters["@st"].Value.ToString();
camp = cmd.Parameters["@camp"].Value.ToString();
if (stt.Text.Equals("APPLIED"))
{
stt.ForeColor = System.Drawing.Color.LawnGreen;
}
else
{
stt.ForeColor = System.Drawing.Color.Firebrick;
label3.Enabled = true;
newstatus.Enabled = true;
update.Enabled = true;
}
}
else
{
MessageBox.Show("Doesn't exits!");
}
}
私はint型の変数にビットパラメータをアサインしようとしています。コメントに投稿された質問。
あなたが取得している正確なエラーとは何ですか? –
@RobertColumbia 'InvalidCastException' – TimeToCode
@RobertColumbia私は答えを – TimeToCode