【问题标题】:cannot implicitly convert type string to char无法将类型字符串隐式转换为 char
【发布时间】:2014-02-04 22:09:57
【问题描述】:

据我所知,char 不同于字符串。我将数据类型 char 赋予表中的列状态。 我被困在这里,因为我第一次使用 char 。这是我的代码

 cmd.CommandType = CommandType.StoredProcedure;
        if (con.State == ConnectionState.Closed)
            con.Open();
        MySqlDataReader dr = cmd.ExecuteReader();
        List<clssessionprp> obj = new List<clssessionprp>();
        while (dr.Read())
        {
            clssessionprp k = new clssessionprp();
            k.p_sescod = Convert.ToInt32(dr[0]);
            k.p_session = dr[1].ToString();
            k.p_status = dr[2].ToString();
        }

这里的状态列是 char 数据类型。我用谷歌搜索,但找不到任何想要的结果。 任何帮助都会得到帮助

我的 BLL 代码是

public void save_rec(clsclsprp p)
    {
        MySqlCommand cmd = new MySqlCommand("ins_cls", con);
        cmd.CommandType = CommandType.StoredProcedure;
        if (con.State == ConnectionState.Closed)
            con.Open();
        cmd.Parameters.Add("_clsnam", MySqlDbType.VarChar, 50).Value = p.p_clsnam;
        cmd.Parameters.Add("_clsdes", MySqlDbType.VarChar, 200).Value = p.p_clsdes;
        cmd.Parameters.Add("_clssec", MySqlDbType.Char,1).Value = p.p_clssec;
        cmd.ExecuteNonQuery();
        con.Close();
        cmd.Dispose();
    }

【问题讨论】:

  • 有什么问题?
  • 我可以看看“K”类吗?
  • 它只是数据类型转换问题的答案解决了它

标签: c# asp.net business-logic type-conversion


【解决方案1】:

怎么样:

dr[2].ToString()[0] - 当然是检查它是否不为空。

或者:

Convert.ToChar(dr[2]) 也可以。

【讨论】:

    【解决方案2】:

    您可以使用Convert.ToChar(Object) 直接将对象转换为字符,而不是使用ToString() 将其转换为字符串。

    k.p_status = Convert.ToChar(dr[2]);
    

    【讨论】:

    • 还有一个问题,mysqldbtype 不支持 Char,我们应该更改它还是如何修复它?
    • 执行 Convert.ToChar(dr[2]) 时是否出现异常?它包含什么数据?
    • 它工作正常,但是在我的 BLL 中的任何方法中传递参数时。它说“MySqlDbType 不包含 Char 的定义”我正在将 Mysql 与 asp.net webforms 一起使用
    • 如果在传递给 MySQLDb 之前将 char 转换为 string 或使用其他适当的类型而不是 string 怎么办?
    • 你可以试试这个,cmd.Parameters.Add("_clssec", MySqlDbType.String).Value = p.p_clssec.ToString();
    【解决方案3】:

    有两种选择...

    Convert.ToChar(dr[2]);

    char chartext = text.ToCharArray()[0];

    【讨论】:

      【解决方案4】:

      这个呢

         k.p_status  = char.Parse(dr[2].ToString());
      

      【讨论】:

        猜你喜欢
        • 2013-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 2014-05-15
        • 2011-05-28
        • 1970-01-01
        相关资源
        最近更新 更多