将varchar转换为float asp.net时出错

时间:2014-07-03 16:30:09

标签: c# asp.net sql sql-server

我正在尝试从一堆文本框中提取数据,然后将它们插入到数据库中,除了两个之外一切都很好,一个是如果它们为null则会出错,但现在不是问题。

当我有一个应该采用数字的文本框时,它说它无法将varchar转换为float。如果我直接在SQL Server中使用插件(使用SQL Server 2008),插入工作,所以我知道它是代码中的东西。

我的文本框很简单:

<asp:TextBox id="CID" runat="server"></asp:TextBox>

我从文本框中提取信息的代码是:

float custID = float.Parse(CID.Text);

我是C#的新手,所以如果你能帮助我,那就更好,但任何帮助都有效。 thx

编辑:这是我得到的错误行:

Line 63: 
Line 64:         sqlConnection1.Open();
Line 65:         cmd.ExecuteNonQuery();
Line 66:         sqlConnection1.Close();
Line 67:     }

要求的代码:

cmd.CommandText = "INSERT INTO Customer VALUES('@custID', @mastName, @custName,      @addrLn1, @addrLn2, @cCity, @cState, @cZip, @cZip4, @cCountry, @cusSince, @renewalDate, @cNotes, @salesRep, @conMem, @ilsProd, @numbSites, @guardItEsc)";

    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;

解析w /参数:

float custID = float.Parse(CID.Text);
    cmd.Parameters.AddWithValue("@custId", custID);

3 个答案:

答案 0 :(得分:4)

@custID在它周围有单引号,所以它被视为varchar(字面意思是试图插入字符串“@custID”)。只需删除引号。

cmd.CommandText = "INSERT INTO Customer VALUES(@custID, @mastName, @custName,      @addrLn1, @addrLn2, @cCity, @cState, @cZip, @cZip4, @cCountry, @cusSince, @renewalDate, @cNotes, @salesRep, @conMem, @ilsProd, @numbSites, @guardItEsc)";

答案 1 :(得分:1)

检查空CID.Text和/或格式问题,例如:15,4(错误) - &gt; 15.4(好的!)

<强> EDIT1: 您似乎忘记了在myCommand.Parameter.AddWithValue("@value",parsedValue);

中映射参数

答案 2 :(得分:1)

查询中的

'@custID'应为@custID