c# - 从C#中的存储过程中获取位值

标签 c# sql-server stored-procedures parameters

情况如下,我在SQL Server中有一个存储过程,它有几个输出参数,其中一个是位类型,我想要的是取那个参数的值,但是我有一个转换错误, InvalidCastException

这是我的代码:

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!");
            }
    }

我正在尝试将 bit 参数分配给一个 int 变量。任何问题都可以发表评论。

最佳答案

我将 (int) 更改为此,现在可以正常工作了:

Boolean lol = Convert.ToBoolean(cmd.Parameters["@bit"].Value);

关于c# - 从C#中的存储过程中获取位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39431900/

相关文章:

c# - 在调用 Read() 之前如何检查 XmlReader 是否可以读取内容?

c# - Web 应用程序与 Linux 多用户应用程序

c# - 如何安装 OpenType(文件类型 : otf) Font on Application Start using C#

mysql - SQL:每个字段值计数的输出表

sql-server - 如何在 Exec 存储过程中使用Where子句

sql - Access 将行连接成单行 : extra conditions needed

c# - 无法在 Windows 10 移动版上部署

sql - 将.bak文件还原到远程数据库

sql - 我在转换/转换 GetDate()[3] 的 dw 日期部分时遇到问题,以便我可以在字符串 [1,3,5] 中找到它

mysql - 结果多于一行