string strInsert = "INSERT INTO tblPProductPart (PartID,PartDesc,PartPrice) VALUES ('" ;
strInsert += PartID + "', '" ; 
strInsert += PartDesc + "', '" ;
strInsert += m_decPartPric + "')" ; 
m_decPartPric所写往的字段的数据类型是money。C#无money类型,我试验着将m_decPartPric 值转化为 decimal 或 float 类型的数据,都报错“不允许从数据类型varchar 到数据类型money的隐性转换”
请高手指教,如果不改变数据库的money类型,用什么办法将数据写入?

解决方案 »

  1.   

    cast(m_decPartPric as money) 试一下。string strInsert = "INSERT INTO tblPProductPart (PartID,PartDesc,PartPrice) VALUES ('" ; 
    strInsert += PartID + "', '" ;  
    strInsert += PartDesc + "', cast('" ; 
    strInsert += m_decPartPric + "' as money))" ;  
      

  2.   

    调用Convert(money, m_decPartPric)string strInsert = "INSERT INTO tblPProductPart (PartID,PartDesc,PartPrice) VALUES ('" ;
    strInsert += PartID + "', '" ; 
    strInsert += PartDesc + "', " ;
    strInsert += "Convert(money, '"+ m_decPartPric+"'))"; 以下是一些转化的示例,
    SELECT Convert(money, '$123456.78') --美元,
    SELECT Convert(money, '€100.45') --英镑
    如果需要保存币值,请在单独的列中进行记录。
      

  3.   

    将数据格式化输出,有很多选择,比如Money的一个实例 money,本来是有4位小数的,可以调用money.ToString(“f2”),让它输出两位小数,但在计算的时候,还是money本身。
      

  4.   

    C#没有money型?
    SqlDbType.Money我的也有啊。。
      

  5.   

    改成:
    string strInsert = "INSERT INTO tblPProductPart (PartID,PartDesc,PartPrice) VALUES ('" ;
    strInsert += PartID + "', '" ; 
    strInsert += PartDesc + "', " ;
    strInsert += m_decPartPric + ")" ;  可以使用decimal,不要用单引号把money类型的引起来