无法将类型为“ System.Byte”的对象转换为类型为“ System.String”。

时间:2020-05-29 13:22:13

标签: c# sql-server

我试图将值从数据库填充到Combobox,并且在运行它时出现此错误:

无法将类型为“ System.Byte”的对象转换为类型为“ System.String”。

Status的类型为tinyint

public void FillStatus()
{
    try
    {
        using (SqlConnection conn = new SqlConnection(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=DesignSaoOsig1;Integrated Security=True"))
        {
            conn.Open();
            string query = "SELECT DISTINCT Status FROM tblZaposleni_AD";
            SqlCommand cmd = new SqlCommand(query, conn);
            using (SqlDataReader saReader = cmd.ExecuteReader())
            {
                while (saReader.Read())
                {
                    string name = saReader.GetString(0);
                    ddlStatus.Items.Add(name);
                }
            }
        }
    }
    catch (Exception)
    {
        throw;
    }
}

2 个答案:

答案 0 :(得分:0)

我找到错误的来源。装有

    ###################################
    # replacement for numpy.unique with option axis=0
    ###################################

    def cupy_unique_axis0(array):
        if len(array.shape) != 2:
            raise ValueError("Input array must be 2D.")
        sortarr     = array[cupy.lexsort(array.T[::-1])]
        mask        = cupy.empty(array.shape[0], dtype=cupy.bool_)
        mask[0]     = True
        mask[1:]    = cupy.any(sortarr[1:] != sortarr[:-1], axis=1)
        return sortarr[mask]

我将这一行替换为

string name = saReader.GetString(0);

答案 1 :(得分:0)

在.NET中将SQL Server tinyint转换为byte时,您需要这样读取它,然后转换为字符串:

byte dbValue = saReader.GetByte(0);
string name = dbValue.ToString();
ddlStatus.Items.Add(name);