none
数据类型转换问题! RRS feed

  • 问题

  • 在数据库中的

    sell_Price money NOT NULL,     --销售单价
     sell_funds money NOT NULL,     --总金额
     sell_Pay money NOT NULL,     --实际付款

    我有一个实体类里边对应的是

    string sell_Price,string sell_funds,string sell_Pay.

    在我的SQL语句中:

    string strSql = "insert into allSellnfo(sell_ID,sell_ClentName,sell_DepotName,sell_Time,sell_Lot_Number,sell_Price,sell_funds,sell_Pay,sell_Number,sell_Worker,sell_Remax,sell_state)";
                        strSql += " values('" + allEntiInfo.Sell_ID + "','" + allEntiInfo.Sell_ClentName + "','" + allEntiInfo.Sell_DepotName + "','" + Convert.ToDateTime(allEntiInfo.Sell_Time) + "','" + allEntiInfo.Sell_Lot_Number + "',";
                        strSql += "" + Convert.ToDecimal(allEntiInfo.Sell_Price) + "," + Convert.ToDecimal(allEntiInfo.Sell_funds) + "," + Convert.ToDecimal(allEntiInfo.Sell_Pay) + "," + allEntiInfo.Sell_Number + ",'" + allEntiInfo.Sell_Worker + "')";
                        _allSellOpreate.RunCommand(strSql, out rowCount);

    老是提示我输入字符串的格式不正确。

    2010年5月19日 7:35

答案

  • 建议把每个 Convert 语句都用变量保存起来,然后调试的时候就非常清楚那里出了问题。比如。

    decimal price = Convert.ToDecimal(myPrice);
    string sqlCommand = string.Format("INSERT MyTable VALUES (\'{0}\')", price);
    ...

    还有个建议就是用 CommandBuilder + SqlParameter 的方法构造 SQL 命令,不要直接用 string 拼。否则,会留下 SQL 注入的问题。


    Mark Zhou
    • 已标记为答案 johnnyford 2010年5月24日 5:13
    2010年5月19日 10:13

全部回复

  • 建议把每个 Convert 语句都用变量保存起来,然后调试的时候就非常清楚那里出了问题。比如。

    decimal price = Convert.ToDecimal(myPrice);
    string sqlCommand = string.Format("INSERT MyTable VALUES (\'{0}\')", price);
    ...

    还有个建议就是用 CommandBuilder + SqlParameter 的方法构造 SQL 命令,不要直接用 string 拼。否则,会留下 SQL 注入的问题。


    Mark Zhou
    • 已标记为答案 johnnyford 2010年5月24日 5:13
    2010年5月19日 10:13
  • 在这句话的前面打个断点 然后选择调试运行

    等到运行到这句话的时候 点击strsql变量 看看具体的值

    “老是提示我输入字符串的格式不正确。” 常见的情况可能是 :

    !allEntiInfo.Sell_Time值不正确 不能转换为日期时间型

    !allEntiInfo.Sell_Price等变量的值不正确 不能转化为decimal 比如 null等就不可以

    2010年5月20日 6:22