【问题标题】:How do I cast decimal values to string from my database?如何将十进制值转换为数据库中的字符串?
【发布时间】:2017-07-07 14:11:46
【问题描述】:

下面的代码 sn-p 从我的表中拉出一个包装大小列,但我使用的是 getString,但我得到一个错误,然后现在看到是一个问题,因为我拉的列是十进制类型。我将如何转换我的 sn-p 以接受十进制值?

try
        {
            string connectionString = "Data Source=CMDLAP121\\SQLEXPRESS;Initial Catalog=TESTBAR;Integrated Security=True";

            string query = "SELECT * FROM BCODEREF WHERE BAR_CODE = '" + comboBox1.Text + "';";
            string mystring = query;
            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
            SqlCommand cmd = new SqlCommand(query, con);
            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                string spo = dr.GetString(dr.GetOrdinal("PACKSIZE"));
                ponum.Text = spo;
            }
        }

        catch (Exception ex)
        {

            MessageBox.Show(ex.ToString());
        }

【问题讨论】:

  • 你在做多余的事情。这更容易:十进制packSize = 0; decimal.TryParse(dr["PACKSIZE"].ToString(), out packSize);是的,关于 sql 注入的评论对于交付非常重要
  • @Prdp 好的,注意到了。
  • @artem 指出。将修复以避免 SQL 注入。还有一个问题,我如何将您的解决方案分配给我的文本框,如我原来的帖子所示?
  • ponum.Text = packSize.ToString("0.00"); //指定你需要的格式。详情见这里stackoverflow.com/questions/8125492/…
  • @Artem 我理解你的意思,但就我的数据而言,我如何从我的数据库中的十进制类型的表中实际提取“PACKSIZE”列数据?跨度>

标签: sql sql-server winforms


【解决方案1】:

先解析成十进制,再转换成你需要的格式的字符串:

decimal packSize= 0; 
decimal.TryParse(dr["PACKSIZE"].ToString(), out packSize);

ponum.Text = packSize.ToString("0.00");  //specify format you need

请参阅post 了解如何设置适当的字符串格式的详细信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 2012-02-03
    • 2013-02-07
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多